iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
自我挑戰組

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

Day26 ( 遊戲設計 ) 猴子接香蕉

猴子接香蕉

教學原文參考:猴子接香蕉

這篇文章會介紹如何使用「創建角色」、「角色是否碰到其他角色」、「當按鈕按下」、「變數」、「重複判斷」、「計次迴圈」等積木,實作一個猴子接香蕉的 LED 燈小遊戲。

相關文章參考:創建角色角色是否碰到其他角色當按鈕按下變數重複判斷

遊戲方式

猴子接香蕉是一個簡單的小遊戲,遊戲開始後,會有「香蕉」不斷從上方掉落,使用者需要操縱「猴子」在下方左右移動接香蕉,如果香蕉到地面上就輸了。使用 micro:bit 的遊戲操作步驟如下:

  • AB 按鈕同時按下,開始遊戲。
  • 遊戲開始後,下方出現「猴子」角色 LED,上方出現「香蕉」角色 LED 掉落 ( 亮度較暗 )。
  • 按下 A 按鈕,猴子角色往左移動。
  • 按下 B 按鈕,猴子角色往右移動。
  • 猴子碰到香蕉,就得分。
  • 香蕉掉落地面,遊戲結束,出現最後總得分。

micro:bit - 猴子接香蕉

積木程式原理

首先設定按鈕控制猴子移動的程式:

  • 當啟動時,建立兩個變數
    • monkey:座標 (2,4) 的猴子角色。
    • run:判斷遊戲是否開始的變數,預設值 0
  • 當按鈕 A 按下時,monkey 的 x 改變 -1 ( 往左移動 )。
  • 當按鈕 B 按下時,monkey 的 x 改變 1 ( 往右移動 )。

micro:bit - 猴子接香蕉

完成後,啟動 micro:Bit,按下 A 按鈕或 B 按鈕,控制下方猴子燈號移動。

micro:bit - 猴子接香蕉

接著設計遊戲開始程式:

  • 放入當按鈕 A+B 按下時的積木。
  • 得分設定為 0。
  • 將變數 run 設定為 1 ( 表示遊戲開始 )。
  • 新增變數 time 為 500 ( 香蕉掉落速度,單位為毫秒 )。

香蕉掉落程式:

  • 放入重複無限次積木。
  • 每次重複時,判斷 run 是否等於 1,等於 1 才讓香蕉開始掉落 ( 開始遊戲 )。
  • 建立 banana 遊戲角色,x 位置為 0~4 的隨機數,y 為 0。
  • 將 banana 角色亮度設定為 50 ( 比猴子暗 )。
  • 放入計次迴圈,次數設定為 4 次,每次重複執行:
    • 讓香蕉的位置等於 index 的數值 ( 香蕉往下移動 )。
    • 暫停 time 豪秒
  • 計次迴圈結束後:
    • 刪除 banana 角色。
    • 將 time 減少 20 ( 這樣每次香蕉出現都會掉落得更快 )。

micro:bit - 猴子接香蕉

完成後,啟動 micro:Bit,同時按下 AB 按鈕,就會出現香蕉不斷的從上而下掉落。

micro:bit - 猴子接香蕉

接著設計「猴子吃到香蕉」的程式:

  • 新增另外一個重複無限次積木
  • 判斷如果 run 等於 1,表示遊戲開始。
  • 再次判斷如果 monkey 角色碰到 banana 角色
    • 讓得分增加 1。
    • 刪除 banana 的角色。

micro:bit - 猴子接香蕉

完成後,啟動 micro:Bit,如果 monkey 碰到 banana 就會得分,並且出現得分動畫效果。

micro:bit - 猴子接香蕉

修改香蕉掉落的程式,加入沒有吃到香蕉時,就表示遊戲結束的程式:

  • 計次迴圈的次數從 4 改成 5 ( 因為在落地 4 的瞬間,吃到香蕉還是算吃到,但如果超過 4 就表示沒吃到 )。
  • 放入第一個邏輯判斷,判斷香蕉如果已經被刪除 ( 被吃掉了 ),就跳出迴圈
  • 放入第二個邏輯判斷,判斷如果 index 等於 5 ( 表示香蕉超過地面,沒吃到香蕉 ):
    • 刪除香蕉角色。
    • 將變數 run 設為 0 ( 表示遊戲結束 )
    • 暫停遊戲。
    • 顯示遊戲得分。

micro:bit - 猴子接香蕉

最後,在按下 A+B 按鈕的積木裡,新增「清空畫面」以及「遊戲繼續」的積木。

micro:bit - 猴子接香蕉

完成後,啟動 micro:Bit,按下 AB 按鈕,就可以開始進行猴子接香蕉的遊戲。

micro:bit - 猴子接香蕉

範例解答

範例解答:猴子接香蕉

實作「猴子接香蕉」的小技巧

  • 為什麼要使用兩個「重複無限次」呢?

    因為如果把「香蕉掉落」和「接香蕉」的程式放在一起,會被香蕉掉落的「延遲時間」影響,造成程式較為複雜且不容易管理,所以將程式分開,觀念上也比較容易理解。

  • 為什麼要使用「遊戲繼續」和「遊戲暫停」呢?

    因為 MakeCode 遊戲積木裡的「遊戲結束」功能,會讓整塊 micro:bit 功能停止運作,必須重新啟動才能繼續遊戲,且創立角色後,角色會影響 LED 所有的顯示畫面,使用了遊戲暫停就能避免這種情況發生。

關於我

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


上一篇
Day25 ( 遊戲設計 ) 翻轉吃豆子
下一篇
Day27 ( 遊戲設計 ) 老鼠走迷宮
系列文
micro:bit 從入門到精通46

尚未有邦友留言

立即登入留言