一、規劃主題
當彈力球在場中四處彈跳,使用者必須控制綠橫桿,想辦法擋住彈力球,避免彈力球碰到最下方的紅底線。
二、功能設計
遊戲主題
搶救彈力球大作戰。
遊戲目標
讓彈力球不落地。
遊戲規則
遊戲開始有三顆彈力球可使用,彈力球在場景內移動遇到牆壁(上側、左側、右側)會反彈,但是落地碰到下方紅線會造成損壞(生命值下降1 單位),因此玩家要用滑鼠控制舞台下方的綠橫桿左右移動,隨時接住落下的球,反彈後能夠繼續移動。
計分方式
接球次數
結束條件
失敗條件:所有的彈力球都損壞了(彈力球的生命值等於0),代表挑戰失敗。
勝利條件:接球60 次代表過關。
三、實際製作
規劃專案進度
設計彈力球程式
為了記錄遊戲的狀態,需要建立2 個變數:
生命值:可用的彈力球數量。
接球次數:使用綠色桿接到彈力球的次數。
遊戲開始,先設定變數初值(「生命值」設為3,「接球次數」設為0),接著自行設定彈力球的起始位置,例如設定x = -10,y = 125。
至於球的起始方向則是由亂數決定(0~359度)。
接著,使用重複結構不斷地讓彈力球移動10 點距離,並且隨時檢查彈力球,若碰到邊緣就必須反彈。
因為遊戲結束的條件是「生命值」= 0 或是「接球次數」= 60,所以重複結構也設定了相同的終止條件。
接著,判斷如果「生命值」= 0 代表挑戰失敗,廣播訊息「失敗訊息」,反之則廣播「成功訊息」,詳細程式如下圖。
可以使用重複結構不斷偵測球是否碰到綠橫桿,若條件判斷為真,則將變數「接球次數」遞增1 單位。
再模擬球碰到綠橫桿後的回彈效果,在此先以程式控制球彈出的方向角度為(180 度- 原本的球進入的方向角度),讓球模擬反方向彈開的效果,詳細程式如下圖。
還可以調整這裡的程式碼,增加不同的特殊回彈效果,以提升困難度。
如果彈力球遇到紅底線,代表玩家沒有成功控制綠橫桿接到彈力球,所以彈力球落下碰到紅底線摔壞了(如下圖)。
因此使用迴圈結構不斷檢查如果球碰到紅底線,那麼變數「生命值」遞減1 單位,並且等候一秒鐘後在指定位置(座標:x = -10, y = 125)重新發球,詳細程式如下圖。
控制綠橫桿移動
如果希望使用滑鼠控制綠橫桿左右移動,但是不要上下亂跑(如下圖黃線軌跡),也就是綠橫桿的x 座標與滑鼠x 座標同步變化,但是綠橫桿的y 座標保持固定值(如下圖 y 座標等於-130)。
參考程式如下圖
顯示遊戲結果
如果生命值遞減至0,代表挑戰失敗,程式顯示失敗訊息「YOU LOSE !」,同時遊戲結束。
此外,只要綠橫桿順利接到彈力球,接球次數會遞增1 單位。
當接球次數累計達到60,代表挑戰成功,程式顯示勝利畫面「YOU WIN !」,同時遊戲結束。請在角色[ 勝利畫面] 內撰寫程式碼