2022年6月1日 星期三

[micro:bit, maker] 拆地雷

 拆地雷 [1]

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FBhttp://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/

Jun 1, 2022
88x31.png[2]


micro:bit 上滿佈著 25 顆地雷,請趕快通報掃雷小組盡速來拆除

圖 1micro:bit 5*5 雷區

從觀察中建立編程邏輯直覺

請讀者們觀察本文最開頭的 GIF 動畫,比參照題目的要求,拿張白紙動手寫出/畫出該動畫可能的操作流程,而這個流程就是本文的編程邏輯。

設計

按 A+B 重新開局。
按 A 後再按 B 隨機選出要拆除的第 (i, j) 顆地雷,i, j = 0~4。其中,micro:bit 的 LED 矩陣座標系統定位如圖 2:

圖 2:LED 矩陣座標系統

程式解說

完整程式碼如圖 3,以下我們來詳細說明程式的設計邏輯:

1. 開局:按鈕 A+B。如圖 3,在按鈕的ㄈ字形事件處理(event handling)積木(blocks) 內置入將 25 顆 LED 全部點亮的積木。思考:要不要先將所有 LED 清除再點亮呢?為什麼?
2. 拆彈定位:按下鈕 A 隨機選 0~4 的 X 座標位置 i;按下按鈕 B 隨機(random)選 0~4 的 Y 座標 j。
3. 拆除炸彈:當 (i, j)是亮著(請參考 MakeCode 的積木使用說明文件)時將之關閉,表示該炸彈已清除。

圖 3:完整程式碼

挑戰

加上計時功能,設定一分鐘內要全數拆完 25 顆地雷才算過關。或者,讓 micro:bit 上的地雷改為每次玩時是隨機佈 n 顆地雷,n = 1~25。註:感謝黃教授提供「暗雷」玩法,我們修改規則如下:

按 A+B 時 25 顆 LED 全亮(表示雷區範圍)開局並隨機產生 1~25 顆暗雷。
按 A 時,掃雷大隊依序移動探雷。
按 B 確認是否找到地雷。若是誤判,則發出錯誤音效。否則,將 LED 變暗表示該顆地雷已被成功拆除。

相關作品

這段影片中,我們使用了信標(beacon)技術來尋找炸彈並拆除它。相關的程式碼都放在影片留言處。
另外,我們仿做了賴盈志老師的手作做品,也實際動手做出了一個版本

學習參考

本單元配合南一書局七年級資訊科技第二冊 6-2 節選擇結構(selective structure)