我們在2020年20期“彈跳小球”這個游戲中,完成了小球落下和反彈的物理效果。今天我們改變一下游戲思路做成雙人桌上冰球的小游戲,這樣兩個人可以互相擊球,把球推到對方門里即得分,雙方需要根據(jù)小球的反彈不停地進(jìn)行防守和反擊,最終按照接球數(shù)量和失誤的次數(shù)來判斷比賽輸贏,互動性特別強(qiáng)。約上你的好朋友一起做個游戲一起玩吧!
首先定下桌上冰球的游戲界面:我們選擇了黑白像素塊,上下用黑色邊框封閉,左右兩邊用兩塊黑色長方塊作為反彈小球的擋板。
接下來為左右擋板編寫代碼,首先實(shí)現(xiàn)控制左右兩個擋板的正常移動。擋板只能上下移動不能左右移動,同時不能穿過上下的黑色邊框。左邊的擋板用W和S鍵操控,右邊的擋板用上下方向鍵操控。重復(fù)執(zhí)行,每次按下相應(yīng)按鍵時Y坐標(biāo)增加或者減少10。雙方成功接到球時,接球次數(shù)增加一次。
為了控制擋板不會穿過上下黑色邊框,我們設(shè)置兩個變量:左/右隨機(jī)數(shù)用于記錄當(dāng)前擋板的運(yùn)動方向(往上時值為+1,往下時值為-1),當(dāng)擋板碰到黑色區(qū)域時自動將Y后退10,Y坐標(biāo)=-10×(正負(fù)1),確保擋板在上下移動過程中不會移出范圍,還可以用其他方式實(shí)現(xiàn)這個目的,你可以想一想。
下面要實(shí)現(xiàn)程序最重要的功能——小球運(yùn)動。對小球編程,設(shè)置初始狀態(tài),廣播“小球移動”。
用一個隨機(jī)數(shù)變量來確定小球的初始方向,設(shè)置變量“隨機(jī)數(shù)(1或2)”取值隨機(jī)1或2,當(dāng)?shù)扔?時,面向90度(左邊)重復(fù)移動10步,當(dāng)?shù)扔?的時候,面向-90度(右邊)重復(fù)移動10步。在球運(yùn)動的過程中我們需要不斷對游戲狀態(tài)做檢測,判斷小球是否出界,判斷小球是否需要反彈,通過雙方失誤次數(shù)判斷玩家勝負(fù)狀況。
當(dāng)小球碰到左邊的擋板的時候,面向0-180度方向進(jìn)行移動實(shí)現(xiàn)反彈,當(dāng)碰到右邊的擋板的時候,面向-180-0度方向進(jìn)行移動實(shí)現(xiàn)反彈,當(dāng)碰到上面的墻壁時,面向90-180度方向移動,當(dāng)碰到下面的墻壁時,面向0-90度方向移動。
如果沒有接住球,那么失敗次數(shù)增加1。廣播“小球移動”,重新開球。當(dāng)一方失敗的次數(shù)超過三次后,系統(tǒng)會自動判斷哪一方獲勝,并結(jié)束游戲。
編程桌面冰球游戲可以提升孩子的邏輯思維能力,因?yàn)樾枰獙π∏虻倪\(yùn)動狀態(tài)進(jìn)行偵測,并據(jù)此判斷合適的反饋。并且設(shè)計適合的游戲玩法提升游戲的趣味性,也是游戲編程的目標(biāo)之一。