iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
自我挑戰組

micro:bit 從入門到精通系列 第 24

Day24 ( 遊戲設計 ) 記憶大考驗

記憶大考驗

教學原文參考:記憶大考驗

這篇文章會使用「陣列」積木,建立兩組燈號數據,搭配「函式」、「變數」、「點亮」、「[計次迴圈」和「邏輯判斷」等積木,在 micro:bit 實作一個找出光點出現在哪個位置的記憶大考驗遊戲。

相關文章參考:陣列函式變數計次迴圈點亮邏輯判斷

遊戲方式

貪記憶大考驗是一款簡單的小遊戲,遊戲開始時,畫面中會出現隨機的三個光點,兩秒後會消失,兩秒內使用者需要記住這三個光點的位置,光點消失後,使用者開始找出光點的正確位置,如果有找到 ( 位置正確 ) 則得分,沒找到 ( 位置錯誤 ) 則遊戲結束。

如果使用 micro:bit 實作,遊戲操作步驟如下:

  • 同時按下 AB 按鈕,開始遊戲,畫面中出現三個光點。
  • 兩秒後光點消失
  • 按下 B 按鈕,會出現一個光點讓使用者移動
  • 按下 A 按鈕,會記錄使用者移動的光點的「位置」,或取消該位置
  • 位置都紀錄完畢後,按下 AB 按鈕,如果三個光點位置正確,得分增加 1,並開始下一題。
  • 如果位置錯誤,顯示得分,遊戲結束 ( 按下 AB 按鈕可以重新開始 )。

micro:bit - 記憶大考驗

積木程式原理

一開始設計按下 A+B 按鈕讓遊戲開始的程式:

  • 當啟動時,設定 run 變數為 0。
  • 當按鈕 A+B 被按下時:
    • 判斷如果 run 是否等於 0。
    • 如果 run 等於 0,設定 run 為 1、score ( 分數 ) 設定為 0,answer ( 答案 ) 設定為 0

micro:bit - 記憶大考驗

參考「依序點燈 ( 數字函式 )」文章,建立一個「點燈函式」。

micro:bit - 記憶大考驗

接著建立「產生三個光點」的題目程式:

  • 新增一個重複無限次積木。
  • 判斷如果 run 等於 1 就執行程式。
    • 清空畫面 ( 清空後續使用者選擇的光點 )
    • 建立 list 和 user_list 兩個空陣列,list 紀錄自動產生的光點位置,user_list 紀錄使用者選擇的光點位置
    • 使用「重複 25 次」迴圈,將兩個空陣列變成有 25 個項目的陣列
    • 參考「隨機不重複的燈」文章,產生三個隨機不重複的光點
    • 產生光點後,暫停 2000 毫秒。
    • 清空畫面。
    • 將 run 設定為 2,讓使用者可以選擇光點位置

micro:bit - 記憶大考驗

編輯「按下 B 按鈕」可以「移動光點」的程式:

  • 判斷如果 run 等於 2,按下 B 按鈕才有作用。
  • 放入計次迴圈,次數設定 0~24 次,顯示使用者紀錄的光點位置
  • 接著透過 answer 變數的更改,做出按下 B 按鈕,畫面光點就移動的效果 ( 參考「按鈕依序開關燈」 )。

micro:bit - 記憶大考驗

編輯「按下 A 按鈕」可以「紀錄光點位置」的程式:

  • 判斷如果 run 等於 2,按下 A 按鈕才有作用。
  • 判斷如果使用者陣列 user_list 指定項目 ( 光點位置 ) 的數值,如果等於 1 就讓其等於 0 ( 如果亮燈狀態就熄燈 ),如果等於 0 就讓其等於 1 ( 如果是熄燈狀態就亮燈 )

micro:bit - 記憶大考驗

最後回到「按下 A+B 按鈕」,新增 run 等於 2 的判斷:

  • 使用計次迴圈,次數 0~24 次:
    • 比對 list 的每個項目內容和 user_list 的每個項目內容
    • 如果有一個內容不相同 ( 表示使用者記錯了 ),將 run 等於 0,遊戲結束,顯示得分
  • 接著判斷如果 run 仍然等於 2,表示使用者答對了,將 run 設為 1,繼續下一題,得分加 1

micro:bit - 記憶大考驗

完成後,啟動 micro:bit,就能開始進行記憶大考驗的遊戲。

micro:bit - 記憶大考驗

範例解答

範例解答:記憶大考驗

實作「貪吃蛇」的小技巧

  • 要做出這個範例,需要先閱讀哪些文章?

    可以先閱讀「依序點燈 ( 數字函式 )」和「按鈕依序開關燈」兩篇文章。

  • 為什麼要使用「兩個」陣列呢?

    因為對於遊戲的程式來說,讓陣列互相比對數值,是相當容易且不容易出錯的,所以才會使用題目一個陣列,使用者一個陣列,互相比對。

關於我

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,如果對我有點興趣(笑,可以與我聯繫,一起來做點有玩又有創意的東西吧!


上一篇
Day23 ( 遊戲設計 ) 射擊幽浮
下一篇
Day25 ( 遊戲設計 ) 翻轉吃豆子
系列文
micro:bit 從入門到精通46

尚未有邦友留言

立即登入留言