翻轉吃豆子
這篇文章會介紹如何使用「旋轉感測」、「創建角色」、「得分」、「變數」、「得分」、「角色是否碰到其他角色」等積木,實作一個透過翻轉 micro:bit 移動 LED 燈位置,去碰撞其他 LED 燈的吃豆子小遊戲。
相關文章參考:旋轉感測、創建角色、變數、得分、角色是否碰到其他角色。
遊戲方式
翻轉吃豆子是一個經由旋轉或翻轉 micro:bit,控制 LED 燈位置的小遊戲,開始遊戲之後,畫面上會出現「可以控制」的 LED 燈 ( 角色 ),還有一個「可以吃」的 LED 燈 ( 豆子 ),翻轉 micro:bit 可以移動角色,當角色碰到豆子,就可以得分 ( 吃到豆子 )。
使用 micro:bit 實作,遊戲操作步驟如下:
- 按下 A 按鈕,開始遊戲。
- 畫面中出現「角色」和「豆子」,豆子的亮度較暗。
- 翻轉 micro:bit 移動角色去碰撞豆子。
- 角色碰到豆子後就得分,豆子消失,從另外的地方再產生新的豆子。
積木程式原理
參考「平衡燈 ( 旋轉感測 )」一文的內容,開啟平衡燈的範例,從這個範例繼續修改。
範例:平衡燈 ( 旋轉感測 )
首先建立一個準備吃豆子的角色:
- 收合畫面裡兩個重複無限次積木,讓畫面更清爽 ( 用滑鼠在積木上按右鍵,選擇收合積木 )。
- 當啟動時,新增一個變數 run,數值設定 0 ( 作為遊戲開始的判斷 )。
- 新增「當按下按鈕 A」積木,按下 A 按鈕時將 run 設定為 1,並建立一個角色 player,位置 (2,2)。
將另外一個重複無限次的積木內容,改成用遊戲積木的方式呈現 ( 設定遊戲角色的 x 和 y 座標為 x 和 y 的變數數值 )。
修改按下按鈕和重複無限次的程式,加入「豆子角色」和「吃豆子機制」:
- 當按下按鈕 A 時:
- 新增一個變數 bean 為豆子角色,x、y 座標分別設定 0~4 的隨機數值,亮度設定 50。
- 設定得分從 0 開始
- 重複無限次積木:
- 新增邏輯判斷,判斷角色 player 碰到豆子 bean ( 角色吃到豆子 )。
- 角色碰到豆子時,刪除豆子角色 ( 變數 bean )。
- 刪除豆子角色後,重新建立豆子角色。
- 角色碰到豆子時,讓得分增加 1。
最後要加入「倒數計時」機制,替遊戲增加更多刺激性,加入倒數計時有兩種方法,第一種方式為「使用開始倒數積木」,將積木加入「當按鈕 A 被按下」的程式最下方,按下 A 按鈕之後,就會開始進行倒數直到時間結束。
比較不建議使用這個做法,因為倒數結束表示「遊戲結束」,在 MakeCode 遊戲積木的預設邏輯中,遊戲結束時所有功能都會停用,直到重新啟動 micro:bit 才能再次使用。
第二種方法是「使用迴圈的倒數計時」:
- 加入「遊戲繼續」積木 ( 創建角色會影響 LED 顯示,所以後方會使用遊戲暫停積木來讓 LED 正常顯示,因此在前面要用「遊戲繼續」來取消暫停 )。
- 使用「重複 10 次」迴圈搭配「暫停 1000 毫秒」,做出倒數 10 秒的機制。
- 倒數結束後,將變數 run 設為 0 ( 表示遊戲結束,無法移動角色 )。
- 刪除 bean 與 player 兩個角色。
- 使用「遊戲暫停」積木,將遊戲暫停,避免影響到 LED 顯示。
- 使用顯示數字積木,顯示最後得分。
完成後,啟動 micro:bit,按下 A 按鈕,開始進行翻轉吃豆子的遊戲。
範例解答
範例解答:翻轉吃豆子
實作「翻轉吃豆子」的小技巧
為什麼要使用「遊戲繼續」和「遊戲暫停」呢?
因為 MakeCode 遊戲積木裡的「遊戲結束」功能,會讓整塊 micro:bit 功能停止運作,必須重新啟動才能繼續遊戲,且創立角色後,角色會影響 LED 所有的顯示畫面,使用了遊戲暫停就能避免這種情況發生。
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~