記憶大考驗
這篇文章會使用「陣列」積木,建立兩組燈號數據,搭配「函式」、「變數」、「點亮」、「計次迴圈」和「邏輯判斷」等積木,在 micro:bit 實作一個找出光點出現在哪個位置的記憶大考驗遊戲。
遊戲方式
貪記憶大考驗是一款簡單的小遊戲,遊戲開始時,畫面中會出現隨機的三個光點,兩秒後會消失,兩秒內使用者需要記住這三個光點的位置,光點消失後,使用者開始找出光點的正確位置,如果有找到 ( 位置正確 ) 則得分,沒找到 ( 位置錯誤 ) 則遊戲結束。
如果使用 micro:bit 實作,遊戲操作步驟如下:
- 同時按下 AB 按鈕,開始遊戲,畫面中出現三個光點。
- 兩秒後光點消失
- 按下 B 按鈕,會出現一個光點讓使用者移動。
- 按下 A 按鈕,會記錄使用者移動的光點的「位置」,或取消該位置。
- 位置都紀錄完畢後,按下 AB 按鈕,如果三個光點位置正確,得分增加 1,並開始下一題。
- 如果位置錯誤,顯示得分,遊戲結束 ( 按下 AB 按鈕可以重新開始 )。
積木程式原理
一開始設計按下 A+B 按鈕讓遊戲開始的程式:
- 當啟動時,設定 run 變數為 0。
- 當按鈕 A+B 被按下時:
- 判斷如果 run 是否等於 0。
- 如果 run 等於 0,設定 run 為 1、score ( 分數 ) 設定為 0,answer ( 答案 ) 設定為 0。
參考「依序點燈 ( 數字函式 )」文章,建立一個「點燈函式」。
接著建立「產生三個光點」的題目程式:
- 新增一個重複無限次積木。
- 判斷如果 run 等於 1 就執行程式。
- 清空畫面 ( 清空後續使用者選擇的光點 )
- 建立 list 和 user_list 兩個空陣列,list 紀錄自動產生的光點位置,user_list 紀錄使用者選擇的光點位置。
- 使用「重複 25 次」迴圈,將兩個空陣列變成有 25 個項目的陣列。
- 參考「隨機不重複的燈」文章,產生三個隨機不重複的光點。
- 產生光點後,暫停 2000 毫秒。
- 清空畫面。
- 將 run 設定為 2,讓使用者可以選擇光點位置。
編輯「按下 B 按鈕」可以「移動光點」的程式:
- 判斷如果 run 等於 2,按下 B 按鈕才有作用。
- 放入計次迴圈,次數設定 0~24 次,顯示使用者紀錄的光點位置。
- 接著透過 answer 變數的更改,做出按下 B 按鈕,畫面光點就移動的效果 ( 參考「按鈕依序開關燈」 )。
編輯「按下 A 按鈕」可以「紀錄光點位置」的程式:
- 判斷如果 run 等於 2,按下 A 按鈕才有作用。
- 判斷如果使用者陣列 user_list 指定項目 ( 光點位置 ) 的數值,如果等於 1 就讓其等於 0 ( 如果亮燈狀態就熄燈 ),如果等於 0 就讓其等於 1 ( 如果是熄燈狀態就亮燈 )。
最後回到「按下 A+B 按鈕」,新增 run 等於 2 的判斷:
- 使用計次迴圈,次數 0~24 次:
- 比對 list 的每個項目內容和 user_list 的每個項目內容
- 如果有一個內容不相同 ( 表示使用者記錯了 ),將 run 等於 0,遊戲結束,顯示得分。
- 接著判斷如果 run 仍然等於 2,表示使用者答對了,將 run 設為 1,繼續下一題,得分加 1。
完成後,啟動 micro:bit,就能開始進行記憶大考驗的遊戲。
範例解答
範例解答:記憶大考驗
實作「貪吃蛇」的小技巧
要做出這個範例,需要先閱讀哪些文章?
可以先閱讀「依序點燈 ( 數字函式 )」和「按鈕依序開關燈」兩篇文章。
為什麼要使用「兩個」陣列呢?
因為對於遊戲的程式來說,讓陣列互相比對數值,是相當容易且不容易出錯的,所以才會使用題目一個陣列,使用者一個陣列,互相比對。
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~