A. 請問使用python (Pygame)在mac上寫小的游戲,調用pygame.sprite.groupcollide()時的bug
一次移動是"跳過"移動速度這么多的像素,而不過逐個像素的移動
方法groupcollide()是檢測兩個精靈組中精靈們的矩形沖突
速度過快導致精靈單次移動就直接跨越了另一個精靈,就不存在兩個精靈矩形的沖突,就不會檢測到
就像走路的時候跨過了一坨泥一樣
這么說能明白嗎?
B. 我最近對游戲編程很有意思我想問一下用python與pygame可以做到什麼程度,是只能做那種比較低端的游戲么。
pygame不是做頁游的,要做網游也不能只用pygame。
pygame可以用來做2d的游戲。
要用python做3d的游戲的話,有panda和blender,另外ogre也有python的api。
至於游戲低端不低端,我感覺主要是游戲設計決定的,不論用多麼好的引擎、多麼好的材質做一個shoot'em up的游戲,都不會給人高端的感覺吧。
C. 黑白棋游戲的源代碼被存放在哪裡
存儲庫。黑白棋游戲的源代碼存放的位置是位於存儲庫。黑白棋游戲又叫翻轉棋(Reversi)、奧賽羅棋(Othello),在西方和日本很流行。
D. 用python 語言就能開發游戲嗎
當然,不用庫就可以開發各種控制台小游戲,比如黑白棋,五子棋之類的。
用pygame庫就能開發更復雜的游戲。
E. 黑白棋怎麼玩
把自己顏色的棋子放在棋盤的空格上,而當自己放下的棋子在橫、豎、斜八個方向內有一個自己的棋子,則被夾在中間的對方棋子全部翻轉會成為自己的棋子。
夾住的位置上必須全部是對手的棋子,不能有空格。並且,只有在可以翻轉棋子的地方才可以下子。一步棋可以在數個方向上翻棋,任何被夾住的棋子都必須被翻轉過來,棋手無權選擇不去翻某個棋子必須是剛下的子夾對方才能夠翻對方的子,因翻轉對方的棋子而夾住的子是不能被翻的。
翻轉棋子時,有一個棋子的翻轉動畫大概顯示1秒左右每次下子最少必須翻轉對方一個棋子,若棋局中下子都不能翻轉對方棋子,則輪空。若二個玩家都不能下子翻轉對方棋子,游戲結束。
F. 黑白棋的設計思路
關鍵是電腦演算法的問題,其實要實現雙人對戰是很簡單的。至於電腦下子的演算法..這個你得個專門的論文看看,要對黑白棋有很深的了解,或者直接剽竊別人的研究結果也可以,呵呵
設計思路
1.main()主函數
在主函數中,棋盤狀態用數組a[8][8],初值為0,表示空格。用圖形系統畫出棋盤,調用playtoplay()人人對弈函數開始游戲,一旦游戲結束後,關閉圖形系統,程序結束。
2.DrawQp()畫棋盤函數
背景顏色設為藍色,從坐標(100,100)開始每隔40個單位用白色畫一條水平直線,一條垂直線,構成棋盤,用循環語句實現。函數setfillstyle()可以設置填充模式和填充顏色,fillellipse(int x,int y,xradius,int yradius)以x和y為圓心,xradius和yradius為水平和垂直軸畫一填充橢圓,當xradius和yradius相等時,則畫出的是圓,用它表示棋子。
3.SetPlayColor()設置棋子的顏色
函數的參數為整型變數t,根據t的值來設計填充棋子的當前顏色,值為1代表白棋,值為2代表黑棋。
4.MoveColor()恢復原來格子的狀態
由於棋手在走棋的時候,他的棋子總是首先出現在棋盤的左上角,棋手要通過移動游標走到要落子的位置,在經過的路程上顯示當前棋子,就會覆蓋原來的棋盤狀態,所以一旦棋子走過後,就應恢復原來的狀態,是空格的依然顯示空格,是棋子的就顯示原來棋子的顏色。因為棋子移動過程並沒有改變數組元素的值,所以可以根據數組元素的值判定原來的狀態,如果值是1,就恢復白色棋子,值是2則恢復黑色棋子,否則恢復藍色空格。
5.playtoplay()人人對戰函數
這是游戲進行的函數,主要是接收棋手的按鍵消息,其處理過程如下:
按Esc鍵程序可以隨時結束。
按上下左右游標鍵,則改變棋子移動的坐標值。
按回車鍵後判斷。
6.QpChange()判斷棋盤變化
當棋手按回車鍵落子後,就要分別往8個方向判斷是否包圍住對方棋子,如果是,則改變棋盤,也就是棋盤上黑白棋子的個數要發生變化。如果所有方向都判斷過,並且沒有引起棋盤的變化,則棋盤變化標志值yes為0,返回yes,結束本函數。
7.DoScore()處理分數
根據當前數組元素的值判斷分數,也就是各方棋子的個數,如果數組元素值為1,白棋棋子數累加;如果數組元素值為2,則黑棋棋子數累加。
8.PrintScore()輸出成績
利用設置實體填充模式填充矩形條清除掉前次的成績,再利用sprintf()函數將整數轉換為字元串的形式,再利用outtextxy()函數將成績輸出。
9.playWin()輸出勝利者結果
根據分數值score1和score2的大小得出下棋的結果,輸出贏者信息。