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