今天我們來實(shí)現(xiàn)一個(gè)模擬傳球小程序诈铛,通過按鍵 A 和 B 來控制球( led 小燈)左右移動(dòng)摊溶,通過這個(gè)小程序拭卿,你將了解到如何使用 Micro:bit 提供的邏輯骡湖、循環(huán)、事件和選擇模塊峻厚。需要注意的一點(diǎn)是响蕴,學(xué)習(xí)編程的重點(diǎn)在于學(xué)習(xí)思考問題解決問題的過程,編程本身只是一個(gè)工具惠桃,是為了幫你解決問題的工具浦夷,如何思考才是最重要的。
效果圖:
實(shí)現(xiàn)的功能
1. 程序開始時(shí)辜王,一個(gè)小球( led 小燈)從屏幕上方移動(dòng)到屏幕中間
2. 當(dāng)按鈕 A 按下時(shí)劈狐,小球向右移動(dòng),碰到屏幕邊緣停止
3. 當(dāng)按鈕 B 按下時(shí)呐馆,小球向左移動(dòng)肥缔,碰到屏幕邊緣停止
4. 如果小球已經(jīng)處于屏幕最右邊,此時(shí)按下按鈕 A汹来,給出箭頭提示按按鈕 B续膳,因?yàn)樾∏驘o法再往右移動(dòng)
5. 如果小球已經(jīng)處于屏幕最左邊改艇,此時(shí)按下按鈕 A,給出箭頭提示按按鈕 B坟岔,因?yàn)樾∏驘o法再往左移動(dòng)
6. 如果小球正向右移動(dòng)谒兄,此時(shí)按下按鈕 B,小球向左移動(dòng)
7. 如果小球正向左移動(dòng)社付,此時(shí)按下按鈕 A承疲,小球向右移動(dòng)
知識點(diǎn)
+ led 點(diǎn)陣及坐標(biāo)
+ 循環(huán)
? + 無限循環(huán)
? + 條件循環(huán)
+ 按鈕按下事件
+ 邏輯判斷
+ 精靈
知識點(diǎn)解析
led點(diǎn)陣及坐標(biāo)
Micro:bit 自帶了一個(gè) 5x5 的 led 點(diǎn)陣屏,可用于文字或圖型展示鸥咖,左上角為 (0,0) 點(diǎn)燕鸽,右下角為 (4,4) 點(diǎn),水平方向(從左到右)為?x軸?方向扛或,依次遞增 [0-4]绵咱,垂直方向(從上到下)為?y軸?方向,依次遞增 [0-4]熙兔,
各個(gè)點(diǎn)坐標(biāo)分布如下 (x,y) :
(0,0)(1,0)(2,0)(3,0)(4,0)
(0,1)(1,1)(2,1)(3,1)(4,1)
(0,2)(1,2)(2,2)(3,2)(4,2)
(0,3)(1,3)(2,3)(3,3)(4,3)
(0,4)(1,4)(2,4)(3,4)(4,4)
循環(huán)
無限循環(huán)
無限循環(huán)悲伶,可以參考?前導(dǎo)知識-程序的流程與基本概念?里面關(guān)于無限循環(huán)的解釋,顧名思義住涉,就是一直會(huì)進(jìn)行下去的循環(huán)麸锉,從進(jìn)入循環(huán)體開始,從上到下執(zhí)行舆声,實(shí)行完畢后會(huì)回到循環(huán)體開頭再從上到下執(zhí)行循環(huán)體花沉。
無線循環(huán)?模塊位于?基本?分類下
有條件循環(huán)
有條件循環(huán)與無限循環(huán)的不同點(diǎn)在于,有條件循環(huán)是帶條件判斷的媳握,如果條件滿足碱屁,就進(jìn)入循環(huán)體執(zhí)行,執(zhí)行完一遍之后蛾找,再次判斷條件娩脾,如果條件成立,則繼續(xù)從上到下執(zhí)行循環(huán)體打毛,否則不繼續(xù)執(zhí)行循環(huán)體柿赊。
Micro:bit 提供了 4 種有條件循環(huán),位于?循環(huán)?分類下
固定執(zhí)行次數(shù)循環(huán)
帶條件判斷循環(huán)
帶索引循環(huán)
遍歷數(shù)組循環(huán)
詳細(xì)解釋見下圖
按鈕按下事件
按鈕按下事件是事件的一種幻枉,關(guān)于?事件?這一概念可以參考?前導(dǎo)知識-程序的流程與基本概念?里面關(guān)于事件的解釋碰声,即當(dāng)某個(gè)按鈕被按下時(shí)應(yīng)該執(zhí)行的動(dòng)作,micro bit 自帶了 3個(gè)按鈕熬甫,分別是正面的?A?B?按鈕和背面的?重置?按鈕胰挑,但是 重置 按鈕的行為不能被更改,默認(rèn)為重新執(zhí)行程序,因此沒有對應(yīng)的事件洽腺,并且 A B 可以同時(shí)按下脚粟,所以有 3 個(gè)按鈕按下事件覆旱,位于?輸入?分類下
+ 當(dāng)按鈕 A 按下
+ 當(dāng)按鈕 B 按下
+ 當(dāng)按鈕 A+B 同時(shí)按下
邏輯判斷
邏輯判斷模塊位于?邏輯?分類下蘸朋,具體解釋如下圖
其中,選擇結(jié)構(gòu)可以相互組合組成更為復(fù)雜的選擇結(jié)構(gòu)扣唱,比如下面的例子包含了 3個(gè)選擇結(jié)構(gòu)藕坯,組成了邏輯:
如果 item > 0 (1)? ??
如果 item = 5 (2)? ? ? ? 顯示數(shù)字 5? ? 顯示數(shù)字 1 否則? ??
如果 item = 0 (3)? ? ? ? 顯示數(shù)字 0? ? 顯示數(shù)字 -1
舉個(gè)例子,當(dāng) item 為 5 時(shí)噪沙,將顯示數(shù)字 5 和 1炼彪,當(dāng) item 為 -2 時(shí),顯示數(shù)字 -1
精靈
精靈是游戲編程里一個(gè)常用的概念正歼,精靈代表了一個(gè)角色辐马,或是一個(gè)人物,在 Micro:bit 里它是一個(gè)LED局义,我們可以控制它進(jìn)行游戲喜爷,它可以移動(dòng),可以檢測有沒有和其他精靈或者屏幕邊緣碰撞萄唇,它可以有各種各樣的屬性檩帐,比如它當(dāng)前的位置,它當(dāng)前的方向等另萤,我們可以在?游戲?分類下找到這些模塊湃密。
思路
了解完了知識點(diǎn),我們來理一理實(shí)現(xiàn)思路四敞。
1. 當(dāng)開機(jī)時(shí)泛源,創(chuàng)建一個(gè)精靈,控制它從屏幕頂端移動(dòng)到屏幕中間忿危,即 y 坐標(biāo) 增加 2 次
2. 精靈會(huì)不停朝一個(gè)方向移動(dòng)达箍,需要用到一個(gè)循環(huán),不停向當(dāng)前方向移動(dòng) 1
3. 當(dāng)按下按鈕 A 時(shí)癌蚁,精靈向右移動(dòng)幻梯,控制精靈的 x 坐標(biāo)每次加 1
4. 當(dāng)按下按鈕 B 時(shí),精靈向左移動(dòng)努释,控制精靈的 x 坐標(biāo)每次減 1 (增加 -1)
5. 當(dāng)按下按鈕 A 時(shí)碘梢,如果精靈碰到屏幕右邊,則顯示指向按鈕 B 的箭頭
6. 當(dāng)按下按鈕 B 時(shí)伐蒂,如果精靈碰到屏幕左邊煞躬,則顯示指向按鈕 A 的箭頭
注意上面的用詞,當(dāng) xxx 時(shí),代表了一個(gè)?事件恩沛,如果 xx 則 xx在扰,代表了一個(gè)?選擇結(jié)構(gòu)
思考題:?知識點(diǎn)和思路都教給你了,思考下如何運(yùn)用上面提到的模塊實(shí)現(xiàn)這個(gè)游戲呢雷客?
實(shí)現(xiàn)
接下來我們一步一步完成這個(gè)游戲:
1. 「基本」->「當(dāng)開機(jī)時(shí)」模塊到編程區(qū)
2. 「變量」->「設(shè)置變量」芒珠,取名為?jingling
3. 「游戲」->「創(chuàng)建精靈」,坐標(biāo)改為 x : 2搅裙,y : 0
4, 「變量」->「將 item 設(shè)為」上一步 的模塊皱卓,把 item 改為?jingling
5. 「基本」->「暫停」模塊部逮,暫停 500ms
6. 「循環(huán)」->「固定次數(shù)循環(huán)」模塊娜汁,設(shè)置重復(fù)次數(shù)為 2 次
7. 「游戲」-> 「更改 x 幅度為 1」模塊到「固定次數(shù)循環(huán)」里,把 x 改為 y
8. 「基本」->「暫托峙螅」模塊到「固定次數(shù)循環(huán)」里掐禁,暫停 500ms
9.「變量」->「設(shè)置變量」,取名為?fudu颅和,值為0
10. 「基本」->「無限循環(huán)」
11. 「游戲」-> 「更改 x 幅度為 1」模塊傅事,1 改為 變量?fudu,由于?fudu?默認(rèn)為 0融虽,因此精靈不移動(dòng)
12. 「基本」->「暫拖硗辏」,暫停 500ms
13. 「輸入」->「當(dāng)按鈕A按下時(shí)」
14. 「邏輯」->「x = x」有额,第一個(gè) x 換成「游戲」->「jingling x」般又,第二個(gè)參數(shù)改為 4,即?jingling?在最右側(cè)
15. 「邏輯」->「如果為」巍佑,條件改成 上一步 的條件
16. 「基本」->「顯示 LED」到「如果為」里茴迁,畫一個(gè)向右的箭頭
17. 「基本」->「暫停」模塊到「如果為」里萤衰,暫停 500ms
18. 「變量」->「將 item 設(shè)為」1堕义,把 item 改為?fudu,這樣按下 A 時(shí)?jingling?就會(huì)不停加 1脆栋,即向右移動(dòng)
19. 選中「當(dāng)按鈕A按下時(shí)」按 Ctrl + C 復(fù)制倦卖,并按 Ctrl + V 粘貼
20. 更改 上一步 粘貼的模塊,把 按鈕 A 改為 按鈕 B椿争,「如果為」條件改為?= 0
21. 箭頭改為 向左
22. fudu?改為 -1
然后就完成啦怕膛,oh~yeah~
完整程序圖
作者微信公眾號:bw_bbz,歡迎關(guān)注啦