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

更新於 發佈於 閱讀時間約 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

 

其他相關文章

架構分析

物件移動及控制

碰撞判定

 

avatar-img
6會員
63內容數
ktest
留言
avatar-img
留言分享你的想法!

































































你可能也想看
Google News 追蹤
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
這篇內容,將透過實戰教學,介紹GameMaker中的Room。包括Room的簡介、調整寬高、圖層功能的概述、用Object來建立實體。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
上週的作業保齡球規則 Student A 角色:玩家1、玩具球、娃娃A、娃娃B、娃娃C 規則:打擊娃娃,要贏得遊戲需要使用玩具球打擊到娃娃,共有三次機會可以打擊,全部娃娃都有被打擊到就能贏得勝利,如三次機會中只打擊到其中一隻/兩隻娃娃,另外沒被打擊到的娃娃會消失,遊戲立即結束! Studen
Thumbnail
題目敘述 題目會給我們一個輸入陣列arr,起始點固定在索引為0的位置, 終點固定在索引為n-1的位置。 假設當下所在的索引位置為i,那麼每次移動的時候,可以跳到i-1,i+1,或者其他和我有相同元素值的位置arr[j], where arr[j] = arr[i]。 例如: 假設當下在i=3
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以左右位移的固定長度。 例如,假設 nums[i] = 3,那麼下一步可以移動到nums[i-3] 或 nums[i+3]這兩個格子點。 題目​會給定一個起始點start索引位置,請問我們能不能走到內部數值為0的格子點?
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以跳躍的最大長度。 題目保證始從最左邊的格子點出發開始跳,一定可以成功抵達終點,請問最少跳躍次數是說少? 題目的原文敘述 測試範例 Example 1: Input: nums = [2,3,1,1,4] Outp
Thumbnail
建立幾個變數如下,最上面兩個變數值為清單值 接下來分別設定球1位置到左上角落、設定球2位置到右上角落、設定球3位置到左下角落、設定球4位置到右下角落 當螢幕初始化的時候,設定玩家球的X、Y座標和大小,並將玩家球的初始顏色,設定成(變數_顏色清單)中.....
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
這篇內容,將透過實戰教學,介紹GameMaker中的Room。包括Room的簡介、調整寬高、圖層功能的概述、用Object來建立實體。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
上週的作業保齡球規則 Student A 角色:玩家1、玩具球、娃娃A、娃娃B、娃娃C 規則:打擊娃娃,要贏得遊戲需要使用玩具球打擊到娃娃,共有三次機會可以打擊,全部娃娃都有被打擊到就能贏得勝利,如三次機會中只打擊到其中一隻/兩隻娃娃,另外沒被打擊到的娃娃會消失,遊戲立即結束! Studen
Thumbnail
題目敘述 題目會給我們一個輸入陣列arr,起始點固定在索引為0的位置, 終點固定在索引為n-1的位置。 假設當下所在的索引位置為i,那麼每次移動的時候,可以跳到i-1,i+1,或者其他和我有相同元素值的位置arr[j], where arr[j] = arr[i]。 例如: 假設當下在i=3
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以左右位移的固定長度。 例如,假設 nums[i] = 3,那麼下一步可以移動到nums[i-3] 或 nums[i+3]這兩個格子點。 題目​會給定一個起始點start索引位置,請問我們能不能走到內部數值為0的格子點?
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以跳躍的最大長度。 題目保證始從最左邊的格子點出發開始跳,一定可以成功抵達終點,請問最少跳躍次數是說少? 題目的原文敘述 測試範例 Example 1: Input: nums = [2,3,1,1,4] Outp
Thumbnail
建立幾個變數如下,最上面兩個變數值為清單值 接下來分別設定球1位置到左上角落、設定球2位置到右上角落、設定球3位置到左下角落、設定球4位置到右下角落 當螢幕初始化的時候,設定玩家球的X、Y座標和大小,並將玩家球的初始顏色,設定成(變數_顏色清單)中.....