我們在2020年20期“彈跳小球”這個游戲中,完成了小球落下和反彈的物理效果。今天我們改變一下游戲思路做成雙人桌上冰球的小游戲,這樣兩個人可以互相擊球,把球推到對方門里即得分,雙方需要根據小球的反彈不停地進行防守和反擊,最終按照接球數量和失誤的次數來判斷比賽輸贏,互動性特別強。約上你的好朋友一起做個游戲一起玩吧!

首先定下桌上冰球的游戲界面:我們選擇了黑白像素塊,上下用黑色邊框封閉,左右兩邊用兩塊黑色長方塊作為反彈小球的擋板。
接下來為左右擋板編寫代碼,首先實現控制左右兩個擋板的正常移動。擋板只能上下移動不能左右移動,同時不能穿過上下的黑色邊框。左邊的擋板用W和S鍵操控,右邊的擋板用上下方向鍵操控。重復執行,每次按下相應按鍵時Y坐標增加或者減少10。雙方成功接到球時,接球次數增加一次。

為了控制擋板不會穿過上下黑色邊框,我們設置兩個變量:左/右隨機數用于記錄當前擋板的運動方向(往上時值為+1,往下時值為-1),當擋板碰到黑色區域時自動將Y后退10,Y坐標=-10×(正負1),確保擋板在上下移動過程中不會移出范圍,還可以用其他方式實現這個目的,你可以想一想。
下面要實現程序最重要的功能——小球運動。對小球編程,設置初始狀態,廣播“小球移動”。
用一個隨機數變量來確定小球的初始方向,設置變量“隨機數(1或2)”取值隨機1或2,當等于1時,面向90度(左邊)重復移動10步,當等于2的時候,面向-90度(右邊)重復移動10步。在球運動的過程中我們需要不斷對游戲狀態做檢測,判斷小球是否出界,判斷小球是否需要反彈,通過雙方失誤次數判斷玩家勝負狀況。

當小球碰到左邊的擋板的時候,面向0-180度方向進行移動實現反彈,當碰到右邊的擋板的時候,面向-180-0度方向進行移動實現反彈,當碰到上面的墻壁時,面向90-180度方向移動,當碰到下面的墻壁時,面向0-90度方向移動。
如果沒有接住球,那么失敗次數增加1。廣播“小球移動”,重新開球。當一方失敗的次數超過三次后,系統會自動判斷哪一方獲勝,并結束游戲。

編程桌面冰球游戲可以提升孩子的邏輯思維能力,因為需要對小球的運動狀態進行偵測,并據此判斷合適的反饋。并且設計適合的游戲玩法提升游戲的趣味性,也是游戲編程的目標之一。