1. 確定的功能:讓玩家通過按上下左右鍵推箱子,當(dāng)箱子們都推到了目的地后出現(xiàn)過關(guān)信息,并顯示下一關(guān)。推錯(cuò)了玩家還按空格鍵從新玩過這關(guān)。直到過完全部關(guān)卡。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),河南網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:河南等地區(qū)。河南做網(wǎng)站價(jià)格咨詢:18980820575
2. 定義的核心數(shù)據(jù)結(jié)構(gòu):我們定義一個(gè)二維數(shù)組ghouse來記錄屏幕上各點(diǎn)的狀態(tài)。char ghouse[20][20]; 其中:0表示什么都沒有,'b'表示箱子,'w'表示墻壁,'m'表示目的地,'i'表示箱子在目的地。
3. 對(duì)整個(gè)進(jìn)行功能模塊劃分。
(1)。初始化:在屏幕上輸出歡迎信息,把ghouse數(shù)組的元素初始化為0。并根據(jù)各關(guān)的要求在屏幕上輸出墻、箱子、目的地和人。并用ghouse 數(shù)組記錄各點(diǎn)的狀態(tài)。
(2)。進(jìn)入游戲循環(huán):這個(gè)游戲主循環(huán)是等待按鍵。當(dāng)接受到上下左右鍵時(shí)執(zhí)行相關(guān)操作:接受ESC鍵時(shí)退出游戲;接受空格鍵時(shí)返回本關(guān)開頭;接受無效按鍵時(shí)做忽略處理。重點(diǎn)介紹按上下左右鍵時(shí)如何執(zhí)行相關(guān)操作。
(3)。判斷是否過關(guān):用一個(gè)鏈表win由每關(guān)的初始化函數(shù)傳給main函數(shù)。Win鏈表主要記錄屏幕上的哪些點(diǎn)是目的地,并記錄目的地的位置。Main函數(shù)每執(zhí)行一次操作后就判斷屏幕上的目的地是不是都有箱子了。
監(jiān)控鍵盤事件,監(jiān)控方向鍵,然后根據(jù)方向鍵判斷角色的對(duì)應(yīng)方向是否有箱子,有箱子,在判斷箱子的前方是否有路;沒有箱子就角色移動(dòng)到那個(gè)位置。
假設(shè)有個(gè)方法判斷坐標(biāo)是箱子還是空地或者越界check(int x,int y)通過返回類型判斷,返回類型可以自己定義,這里定義成int類型,0代表箱子,1代表空地,2代表越界
if(check(X+1,y)==0){
if(check(x+2,y)==1){
//箱子往右移動(dòng)一格,同時(shí)角色也往右移動(dòng)一個(gè)
}else if(check(x+2,y)==2){
//箱子推不動(dòng),角色也不動(dòng),箱子到了墻角,給出提示或者保持角色和箱子原地不動(dòng)、
}
}
if(check(x+1,y)==1){
//角色往右移動(dòng),箱子不動(dòng)
}
同理等于2的時(shí)候,角色原地不動(dòng)。。。
這只是簡(jiǎn)單的做了判斷,具體的實(shí)現(xiàn)看你自己了,可以把人和箱子分開判斷。??傊阉悸贩治銮宄蚈K
以前看過如鵬網(wǎng)的《這樣學(xué)Java不枯燥》視頻教程,通過開發(fā)飛機(jī)大戰(zhàn)等經(jīng)典小游戲來講解Java的知識(shí)點(diǎn),挺有意思的