[ Micro:bit ] 樂透開獎機教學

任務目標

  • 從 1 ~ 6 的數字中選出 3 個不同的數字並顯示於 LED
  • 按鈕 A 清除畫面
  • 按鈕 B 顯示開獎結果

學習目標

  • 條件判斷
  • 變數
  • 亂數產生
  • 迴圈
  • 條件判斷
  • 函式
  • 陣列
  • LED 顯示與清空
  • 暫停
  • Blockly 語法
  • Python 語法

前置準備

  • 一台電腦
  • 覽瀏器 ( 本範例使用 Chrome )

使用料件

  • Micro:bit
  • Micro USB Cable

樂透開獎機程式邏輯

當按鈕 A 被按下時
    宣告一個 itemArray 的變數存放 1 到 6 的數字

當按鈕 B 被按下時
    從 itemArray 中隨機取出 1 數值並從 itemArray 中移除,此動作執行 3 次, 
    以取出 3 個樂透數值且保證不重複

樂透開獎機程式撰寫

一、Blockly 語法

Step 1. 開啟線上編輯器
❖ 1.1  開啟瀏覽器並輸入下方網址
       https://makecode.microbit.org/#


Step 2. 撰寫 Blockly 程式
❖ 2.1  依樂透開獎機程式邏輯進行 Blockly 程式撰寫

※ 程式說明 ※

宣告一 setArray 函式
    再宣告一個 itemArray 的陣列存放 1 到 6 的數字

當程式啟動時
    ① 建立一個空的 itemArray 的陣列
    ② 宣告 totalCount 與 catchCount 並設定初值為 3
    ③ 呼叫 setArray 函式

當按鈕 A 被按下時
    呼叫 setArray 函式
    清空 LED 畫面

當按鈕 B 被按下時
     如果 totalCount 大於等於 catchCount,則
        迴圈從 0 執行到  catchCount -1 次
            ① 宣告 arrayLength 變數存放 itemArray 陣列的元素個數
            ② 宣告 randomNo 變數存放隨機產生 0 ~ arrayLength -1 的數值
            ③ 在 LED 畫面上顯示 itemArray 陣列中 randomNo 所在的數值並
              將其值從 itemArray 中移除
            ④ 暫停 1 秒鐘
     否則,
            在 LED 畫面上顯示 x

Step 3. 燒錄程式到 Micro:bit

❖ 3.1  ① 將所撰寫的程式命名
       ② 儲存所撰寫的 Blockly 程式到電腦中
       ③ 將上一步驟中的程式移到 Micro:bit 進行燒錄
       ④ 在 Micro:bit 上進行測試

Step 4. 成果

從 1 ~ 6 的數字中選出 3 個不同的數字並顯示於 LED


二、Python 語法

Step 1. 開啟線上編輯器
❖ 1.1  開啟瀏覽器並輸入下方網址
       https://python.microbit.org/v/1


Step 2. 撰寫 Python 程式
❖ 2.1  依樂透開獎機程式邏輯進行 Python 程式撰寫

※ 程式說明 ※

第 1 行:程式注解最前面以 【 # 】字符號代表,注解請勿使用中文
第 2、3 行:匯入 micro:bit 套件
第 5、6 行:宣告 catchCount 與 totalCount,並初始化為 3、0
第 8 行:① 【 while 】代表 Pyhton 的迴圈,
            True 代表條件為真、False 代表條件為假,
            此行代表 【 持續不斷執行的迴圈 】
        ② 以【 : 】做結尾
第 9 行:① 以 【 Tab 】 鍵為縮排代表是在迴圈中的事件
        ② 如果按下 A 按鈕
        ③ 以【 : 】做結尾
第 10 行:① 以 【 Tab 】 鍵為縮排代表是在按下 A 按鈕的事件
         ② 清空畫面
第 11 行:① 以 【 Tab 】 鍵為縮排代表是在按下 A 按鈕的事件
         ② 宣告 list1 的串列並初始化為 1、2、3、4、5、6
第 12 行:① 以 【 Tab 】 鍵為縮排代表是在迴圈的事件
         ② 如果按下 B 按鈕
         ③ 以【 : 】做結尾
第 13 行:① 以 【 Tab 】 鍵為縮排代表是在按下 B 按鈕的事件
         ② 執行迴圈從 0 到 catchCount - 1
         ③ 以【 : 】做結尾
第 14 行:① 以 【 Tab 】 鍵為縮排代表是在 for 迴圈的事件
         ② 宣告 arrayLength 的變數並設定 list1 的長度值
第 15 行:① 以 【 Tab 】 鍵為縮排代表是在迴圈中的事件
         ② 宣告 randomNo 變數存放隨機從 0 到 arrayLength -1 的數值
第 15 行:① 以 【 Tab 】 鍵為縮排代表是在迴圈中的事件
         ② 在 LED 畫面顯示 list1 串列中,以 randomNo 所在位置的數值,
            並從 list1 串列中刪除此數
第 18 行:① 以 【 Tab 】 鍵為縮排代表是在 for 迴圈的事件
         ② 暫停 1 秒鐘, 
            1000 毫秒 ( milliseconds ) = 1 秒 ( seconds )

Step 3. 燒錄程式到 Micro:bit

❖ 3.1  ① 將所撰寫的程式命名
       ② 儲存所撰寫 Python 的 hex 程式到電腦中
       ③ 將上一步驟中的程式移到 Micro:bit 進行燒錄
       ④ 在 Micro:bit 上進行測試

Step 4. 成果

從 1 ~ 6 的數字中選出 3 個不同的數字並顯示於 LED


GitHub
【 GitHub Blockly 】 https://github.com/ArcherHuang/Micro-bit/tree/master/Game/Blockly
【 GitHub Python  】 https://github.com/ArcherHuang/Micro-bit/tree/master/Game/Python
【      Name      】 microbit-Lottory
List of blogs
ALL RIGHTS RESERVED. COPYRIGHT © 2018. Designed and Coded by Makee.io