目錄 購物車 {{currentCart.getItemCount()}}

oplate App 分享區

 

銀髮樂活  /  職能治療  /  運動健身  /  程式教育  /  app客製化

 

程式教育 > 專題 > 專題01

專題簡介

這個專題我們要做的是聲光反應訓練的遊戲。
遊戲開始時會隨機亮起一個小黑盤,玩家感應後會暗掉,同時再亮起下一個,直到遊戲結束。

需要的小黑盤數量和應用的元件:
1.  小黑盤數: 2
2.  元件應用: LED、蜂鳴器、IR

 

專題內容

1.  專題下載 Projects01(.aia檔)

 

2.  示範影片中,首先我們分別連接好兩個小黑盤,輸入遊戲次數,再按「開始」按鈕後遊戲開始。

3.  我們開個新專案,名稱為「Projects01」,App名稱為「專題01」。
     在「畫面編排」中,我們放進的元件分別有:
     顯示標題的「標籤」、兩個連線用的「清單」、輸入遊戲次數用的「文字輸入盒」、顯示遊戲次數的「標籤」和開始「按鈕」。
     然後還要兩個「BLE擴充元件」和一個「計時器」。

     玩家操作時的順序為:
     1. 分別點取兩個連線「清單」,執行連線動作。
     2. 在「文字輸入盒」中輸入遊戲次數。
     3. 按「開始」按鈕,遊戲開始。

     我們在「程式設計」中也會照這個順序製作。

4.  進到「畫面編排」,圖中為藍芽連線的程式方塊組合。
     1. 連線部分先做好第一個藍芽連線,增加第二個藍芽連線的部分如圖所示。
     2. 第二個藍芽連線和第一個是一樣的組合方式,只是使用的元件不同。
     3. 另外我們加進了當藍芽斷線時「清單」背景變紅色的程式。

5.  連線的程式方塊完成後,接下來是「開始」按紐要執行的工作,有兩項。
     1. 一個是「標籤」遊戲次數的文字要顯示出「文字輸入盒」裡玩家輸入的數字。
     2. 然後就是執行遊戲。
         因為這段遊戲的程式方塊在之後也會用到,所以就獨立出來做成一個「程序」,這樣要用的時候就只要呼叫這個「程序」,而不用重新再做一次,如此可讓畫面簡單清楚一點。
         這裡的「程序」我們命名為「遊戲」。
     第3點是限制條件,我們要確定手機已經連上兩個小黑盤,才能執行上面兩個工作,避免當機。

6.  分解一下我們的遊戲玩法成4個步驟:
     1. 遊戲開始 → 2. 隨機亮起一個小黑盤 → 3. 玩家感應後會暗掉,同時再亮起下一個 → 4. 直到遊戲結束。

     步驟1就是「開始」按紐的內容。
     而程序「遊戲」的內容包括了步驟2和步驟4。

7.  先加入三個變數,變數「目標」代表亮哪個小黑盤,變數「目標1」和「目標2」分別代表兩個小黑盤的狀態,「真」表示亮的,「假」表示暗的。

     1. 首先是遊戲次數的條件方塊。
         「標籤_遊戲次數 . 文字」真正代表的意思是 ”遊戲次數還有幾次” ,會從一開始輸入的遊戲次數隨著遊戲進行減少到0。
         所以條件方塊的內容是:
         只要遊戲次數還大於0,遊戲就要持續進行;等於0的時候,遊戲停止。

     2. 進行遊戲的方式,先隨機從兩個小黑盤中選一個。
         程式方塊是隨機從1和2中選一個設為變數「目標」,變數「目標」=1代表1號小黑盤,2代表2號小黑盤。

     3. 如果選出來是1號小黑盤,就發出亮起全紅燈的命令,並將變數「目標1」設為「真」,表示1號小黑盤是亮的狀態。
         如果選出來是2號小黑盤,也是同樣操作。

     4. 遊戲次數等於0,表示遊戲結束。
         我們發出頻率1000的聲音來表示,並啟用「計時器1」決定聲音的長短。

8.  「計時器1」的計時間隔是300ms(0.3秒),當計時器啟用後我們要執行的是:
     1. 先關掉啟用計時,不然每隔0.3秒會重複執行一次計時器內容的工作。
     2. 發出命令關掉所有小黑盤的聲音。

     所以連著上張圖第4點,就是說發出頻率1000的聲音並啟用「計時器1」,0.3秒後關掉聲音。

9.  接下來就是步驟3:  玩家感應後會暗掉,同時再亮起下一個。

     如果只根據步驟說明:
     1. 先設一個變數「IR1」代表1號小黑盤偵測到的IR數值(經過轉換後的十進位格式,範圍是0 ~ 65535)。
     2. 我們希望玩家用手感應時能靠近小黑盤一點,所以把IR數值設大一點,譬如50000,代表小黑盤偵測到的IR數值要超過50000以上才能執行感應到以後的動作。

     感應到之後要執行兩個動作。
     3. 一個是關掉1號小黑盤的燈。
     4. 另一個就是開始下一回合遊戲(記得「標籤_遊戲次數 . 文字」要減1)。

10.  以上就是根據步驟說明製作的程式方塊,但在實際操作後會發現一些問題。
       大家其實可以用同樣方式把2號小黑盤的做出來,然後匯出apk檔親自操作看看,會更清楚問題所在。

       為了要避免那些問題,需要加進一些條件限制,最後的成果如圖。

     1. 首先,我們加進了一個變數「IR偵測1」。
因為 ”當小黑盤偵測到的IR數值超過50000以上“ 會執行 ”開始下一回合遊戲”,所以只要手還沒遠離IR值就會一直都超過50000,就會連續執行 ”開始下一回合遊戲”的動作,所有的遊戲次數會在一次感應就玩完了。
         因此我們用這個變數來控制,初始值是「真」。
         當條件符合感應到的IR值>50000同時變數「IR偵測1」=「真」時,才能執行其中的內容。內容裡會先將變數「IR偵測1」變成「假」,如此就不會重複執行了。

         但只要手離開超過一段距離,就可以再次執行。
         所以當感應到的IR值<5000(代表手離開的距離),就再把變數「IR偵測1」變成「真」,這時手靠近就可以再次執行了。

     2. 我們還希望加上 “手去感應有亮燈的那個小黑盤才會執行動作,沒有亮燈時手怎麼感應都不會有反應” 這個條件。
         如果沒有這個限制,當1號小黑盤亮燈時,去感應2號小黑盤也會開始下一回合遊戲。
         還記得變數「目標1」和「目標2」嗎?分別代表兩個小黑盤的狀態,「真」表示亮的,「假」表示暗的。
         就是用在這裡。

         綜合以上2點意思是說,當條件符合感應到的IR值>50000、變數「IR偵測1」=「真」和「目標1」=「真」時才會執行其中的內容。

     3. 另外我們還加進了音效,當感應成功時會發出0.3秒頻率500的聲音。

11.  以上就是我們專題1的內容說明。
       大家可以試著自己增減一些效果,或是增加小黑盤的個數,變化出不同的玩法。