tuidong()函式是用來判斷遊戲人物前方情況的函式,是推箱子遊戲中非常重要的乙個函式,下面從它開始繼續介紹推箱子的小程式怎麼寫:
e) tuidong()函式:判斷移動人物的前方的情況
1) 第一部分:
1int 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) 第二部分
1switch
(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()函式:判斷輸贏的函式
1intwinshu()
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,如此則可以將檢視和邏輯相分離。將地圖對映為乙個二維陣列,為相應的區域賦值為數字...