首先把把FP大小設定為W450 * H500,要用到的物件、訊息框全部擺上FP,
除了遊戲中不會再變更位置的物件都要先放到預定的位置
這邊要稍微調整一下各物件階層關係,避免物件移動時意外被遮蓋
背景部份用兩張一樣的圖交替,圖必須設定為最下層
程式用sequence結構
sequence0用來設定物件的初始狀態及初值
另外把障礙物的reference群組化成array,方便後續處理物件移動及碰撞判定
其中背景剛剛把它移到最下面兩層,所以把AllObjs[ ] array翻轉後取最前兩個就是背景的Ref
sequence1設定會移動的物件初始位置以及展示上下飛的球
單純就是用property的Top和Left來控制
按start鍵後進入主要程式sequence2
sequence2是控制物件位置更新和碰撞檢查,每個loop流程如下
- 首先檢查是否按下空白鍵
- 有:球往上移動,無:球自由落體
- 背景往左移一格
- 所有障礙物往左移一格
- 如果 i+1=150觸發額外的障礙物,這邊會額外檢查飛行障礙碰撞。
- 檢查是否有一般障礙物通過球左方,有則+1分並在畫面顯示+1
- 檢查碰撞,若有顯示總分結束遊戲。沒有就回到第一步
這邊while loop用了三個shift register
Frame是用來紀錄現在球是自由落下的第幾個時間單位,讓落下的行為更自然
每次按下空白鍵讓球往上之後Frame會重置為1
Score用來紀錄目前通過多少支障礙,每通過一支+1
布林的register用來紀錄額外障礙物是否啟動,因為額外障礙不是和一般障礙一樣不斷循環
當 i+1=150*n時觸發case,同時subvi會輸出true讓case一直處於啟動狀態
直到障礙物到返回點重置位置後,subvi會輸出False等下一次觸發。
如果要讓程式更加fancy而不是只能玩一次那就必須把結構改成state machine
以上的程式可在google driver下載
其他相關文章
留言列表