用C寫乙個簡單的推箱子遊戲(二)

2022-09-01 05:45:12 字數 2182 閱讀 6562

tuidong()函式是用來判斷遊戲人物前方情況的函式,是推箱子遊戲中非常重要的乙個函式,下面從它開始繼續介紹推箱子的小程式怎麼寫:

e)   tuidong()函式:判斷移動人物的前方的情況

1)   第一部分:

1

int count,caw=0;//

行和列

2int

i,j,tui;

3for(i=0;i<9;i++)412

}13}14 tui=getch();

說明:①為了判斷遊戲人物位置,首先需要將人物位置記錄下來,此處用count和caw變數記錄初始位置;

②使用getch()函式而不用getchar()函式的原因是:getchar()函式輸入乙個字元後需要回車來進行下乙個字元的輸入,比較麻煩,而getch()函式則不需要回車就能連續輸入多個字元。所以採用getch()函式對玩家鍵盤輸入的內容進行記錄,並將值賦給tui。

2)   第二部分

1

switch

(tui)2

9else

if(map[count-1][caw]==3||map[count-1][caw]==7)10

17}18break;19

case's

'://

向下20

……(同理)

21case'a

'://

向左22

……(同理)

23case'd

'://

向右24

……(同理)

25default://

錯誤輸入

26 printf("

你的輸入有誤,請輸入方向鍵");

27 }

說明:①這裡只取向上的**進行解釋,其他方向原理同理;

②遊戲人物前面的位置有以下幾種情況:

1.人的前面是空地;

2.人的前面是終點位置;

3.人的前面是箱子

3.1.箱子的前面是空地;

3.2.箱子的前面是終點位置。

③第乙個判斷條件map[count-1][caw]==0||map[count-1][caw]==4就是判斷前面第1和第2兩種情況的。如果滿足這兩種情況,則執行map[count][caw]-=2和map[count-1][caw]+=2的操作,即:將人的位置變為空地並將前方一格變為人或者人在終點的標誌。不滿足則執行下乙個判斷。

④第二個判斷條件map[count-1][caw]==3||map[count-1][caw]==7就是判斷前面第3種情況。人的前面有箱子,這個箱子可以是在空地之上,也可以是在終點位置之上(這個是為了區分兩種情況:一種是如果箱子在空地之上,那麼人過後可以直接變為空地,但是另外一種情況就是,當箱子是在終點之上時,人通過終點後,仍然需要有終點標記)。而在人的前面有箱子(不管是箱子在空地之上還是在終點之上)這種情況下,因為箱子的前面情況不同,結果也會不同。比如說箱子前是牆壁或者是箱子,那麼人是不能推動的,而如果前面是終點或者是空地則是可以推動的。因此,在判斷完人前有箱子之後,還要進一步判斷箱子前的情況,所以,就需要加上第二個判斷條件(即前面3.1和3.2情況):當滿足map[count-2][caw]==0||map[count-2][caw]==4情況時,進行如下操作:map[count][caw]-=2;map[count-1][caw]-=1;map[count-2][caw]+=3。

第乙個是將人的位置變為空地,第二個是將箱子標誌/箱子在終點標誌變為人標誌/人在終點的標誌,第三個是將箱子前的空地/箱子前的終點位置變為箱子/箱子在終點的標誌。

f)   winshu()函式:判斷輸贏的函式

1

intwinshu()

2 }8

if(k==0

)9 printf("

恭喜你,你贏了!\n

");}

這段函式是在每次移動指令輸入後列印螢幕前進行判斷的函式,所以它引用在drawmain()函式裡面(見前面的d部分)。其判斷依據很簡單,我們把沒有到達的箱子命名為空箱子,其判斷依據就是當空箱子為零時,玩家就贏了。

將以上所有函式組合起來就可以完成這個簡單的推箱子小遊戲了,這個只是一關,如果想要增加關卡數,可以採用三維陣列,新增的陣列用來記錄關卡數即可。

《用c寫推箱子遊戲原始碼

推箱子 用c 寫乙個推箱子小遊戲

推箱子?小遊戲?沒錯,於我而言,用來打發無聊 初中課餘時光的好辦法,當然就是寫乙個小遊戲再自己玩個十幾遍了吖當然,也是適合廣大程式設計愛好者編寫的程式,很好理解喲 對了,確定不給個贊或者關注?嘿嘿 話不多說,直接開始!include include using namespace std char ...

自己用C 寫的乙個推箱子

自己寫了乙個推箱子,不過目前只有兩關,打圖太難了orz。絕不是因為我太懶 include include includeusing namespace std 為到位 為箱子 x為邊界 為人物 o為目標點 int step 關卡 int x,y 人物座標 char m 移動 bool flag fa...

如何寫乙個Java版推箱子

思路是先想好要準備的種種細節,將其都考慮好之後甚至寫了一部分功能 後,再從整體上考慮優化。細節上要了解 1.swing 包掌握影象,動畫與事件監聽等基本知識。能夠明白每推動一次箱子就是使用雙緩衝技術重繪一次 jpanel,如此則可以將檢視和邏輯相分離。將地圖對映為乙個二維陣列,為相應的區域賦值為數字...