Flappy bird like LabVIEW game遊戲 (4) - 物件配置&程式

2020/06/17閱讀時間約 2 分鐘

首先把把FP大小設定為W450 * H500,要用到的物件、訊息框全部擺上FP,

除了遊戲中不會再變更位置的物件都要先放到預定的位置

這邊要稍微調整一下各物件階層關係,避免物件移動時意外被遮蓋

背景部份用兩張一樣的圖交替,圖必須設定為最下層

 

程式用sequence結構

sequence0用來設定物件的初始狀態及初值

另外把障礙物的reference群組化成array,方便後續處理物件移動及碰撞判定

其中背景剛剛把它移到最下面兩層,所以把AllObjs[ ] array翻轉後取最前兩個就是背景的Ref

sequence1設定會移動的物件初始位置以及展示上下飛的球

單純就是用property的Top和Left來控制

按start鍵後進入主要程式sequence2

raw-image

sequence2是控制物件位置更新和碰撞檢查,每個loop流程如下

  1. 首先檢查是否按下空白鍵
  2. 有:球往上移動,無:球自由落體
  3. 背景往左移一格
  4. 所有障礙物往左移一格
  5. 如果 i+1=150觸發額外的障礙物,這邊會額外檢查飛行障礙碰撞。
  6. 檢查是否有一般障礙物通過球左方,有則+1分並在畫面顯示+1
  7. 檢查碰撞,若有顯示總分結束遊戲。沒有就回到第一步

這邊while loop用了三個shift register

Frame是用來紀錄現在球是自由落下的第幾個時間單位,讓落下的行為更自然

每次按下空白鍵讓球往上之後Frame會重置為1

Score用來紀錄目前通過多少支障礙,每通過一支+1

布林的register用來紀錄額外障礙物是否啟動,因為額外障礙不是和一般障礙一樣不斷循環

當 i+1=150*n時觸發case,同時subvi會輸出true讓case一直處於啟動狀態

直到障礙物到返回點重置位置後,subvi會輸出False等下一次觸發。

raw-image

如果要讓程式更加fancy而不是只能玩一次那就必須把結構改成state machine

以上的程式可在google driver下載

FlappyLV source code

 

其他相關文章

架構分析

物件移動及控制

碰撞判定

 

    5會員
    56內容數
    ktest
    留言0
    查看全部
    發表第一個留言支持創作者!