樹莓派 micro:bit game controller with Scratch
2017-09-06 07:09micro:bit game controller with Scratch
What you will make
在這個資源中,你將使用BBC micro:bit來控制Scratch中的精靈,並且進行巨大的星際爭霸。
What you will learn
通過創建一個帶有BBC micro:bit的微型位遊戲控制器和您的Raspberry Pi,您將學習
如何在micro:bit和Scratch之間傳遞數據
如何使用micro:bit控制Scratch sprite
如何製作酷炫的“太空飛船”遊戲
這個資源涵蓋了以下Raspberry Pi數字製作課程的內容:
設計基本的2D和3D資產
使用基本的編程結構來創建簡單的程序
組合輸入和/或輸出來創建項目或解決問題
What you will need
Hardware
除了帶有SD卡和常規外圍設備的Raspberry Pi,您還需要:
BBC micro:bit
USB-A to micro USB-B cable
有關硬件要求的更多信息,請參閱硬件信息頁面
Software
要準備此資源,您需要一個最新的SD卡映像。 請參閱更新Raspbian指南。
您還需要安裝以下附加軟件:
Python 3 Scratch
mu
有關安裝這些庫的信息,請參閱軟件安裝頁面
BBC micro:bit game controller
在這個資源中,你將使用一個micro:bit作為遊戲控制器在Scratch,並幫助重新獲得對星系的控制!
Setting up the micro:bit
If you are unfamiliar with using the micro:bit, MicroPython, and the Raspberry Pi, you might want to take a look at the Getting Started with the micro:bit resource.
Finding the USB port
對於micro:bit能夠與Scratch進行通信,您需要知道micro:bit如何連接到Raspberry Pi。
1.將Micro:bit與Raspberry Pi斷開連接,打開LXTerminal,然後鍵入以下內容:
ls
/dev
/ttyA
*
1. 通過USB電纜插入micro:bit,再次鍵入命令:
ls
/dev
/ttyA
*
輸出中應該有一個新條目,可能是像dev / ttyACM1這樣的東西。 你需要注意這一點。
Setting up the Python file
打開IDLE(菜單>編程> Python 3 , Menu > Programming > Python 3),創建一個新文件(File> New File),然後將下面的代碼複製並粘貼到文件中。 將其另存為rpi.py。
import serial
fromtime
importsleep
import scratch
scr
=scratch
.Scratch
()
## THE NEXT LINE MIGHT NEED TO BE CHANGED - TYPE ls /dev/ttyA* into the terminal to see which port is needed.
PORT
= "/dev/ttyACM1"
##
BAUD
= 115200
s
=serial
.Serial
(PORT
)
s
.baudrate
=BAUD
s
.parity
=serial
.PARITY_NONE
s
.databits
=serial
.EIGHTBITS
s
.stopbits
=serial
.STOPBITS_ONE
while True:
data
=s
.readline
().decode
('UTF-8')
data_list
=data
.rstrip
().split
(' ')
try:
x
,y
,z
, a, b =data_list
scr
.sensorupdate
({'x' :x
})
scr
.sensorupdate
({'y' :y
})
scr
.sensorupdate
({'z' :z
})
scr
.sensorupdate
({'a' : a})
scr
.sensorupdate
({'b' : b})
except:
pass
s
.close
()
這個文件一旦運行,就會收聽從micro:bit發出的任何數據,然後發送到Scratch。 您可能需要更改此行:
PORT
= "/dev/ttyACM1"
它需要與您之前註意到的端口相同。
Coding the micro:bit
micro:bit需要運行一些代碼,將不斷打印出其加速度計讀數和按鈕推送。
通過打開LXTerminal打開mu,然後鍵入以下命令:
./mu
現在將下面的代碼複製並粘貼到編輯器中:
from microbit
import *
def get_sensor_data
():
x
,y
,z
=accelerometer
.get_x
(),accelerometer
.get_y
(),accelerometer
.get_z
()
a, b =button_a
.was_pressed
(),button_b
.was_pressed
()
print(x
,y
,z
, a, b)
while True:
sleep
(100)
get_sensor_data
()
1. You can flash this file into your micro:bit straight away.
Setting up Scratch
1.在Raspberry Pi上打開Scratch(菜單>編程> Scratch)。
2.轉到感應,然後右鍵單擊屏幕底部附近的滑塊傳感器值 slider sensor value
,然後從上下文菜單中選擇啟用遠程傳感器enable remote sensor
連接connections
。 當對話框打開時,單擊確定。
3.現在切換回IDLE,按F5運行您的rpi.py腳本。
4.在Scratch中,您現在應該能夠從micro:bit的傳感器中查看值。 只需點擊滑塊傳感器值塊上的箭頭,選擇一個,然後選中框:
1. 如果您對傳感器b,x,y和z重複,那麼您的Scratch階段應該如下所示:
6.如果您傾斜micro:bit,您應該看到x,y和z值發生變化。 按下按鈕將a和b從False切換到True。
7.如果讀數不起作用,請再次檢查micro:bit端口,並確保代碼正在micro:bit和Raspberry Pi上運行。
Making the assets
你將需要三個新的精靈為這個遊戲。 刪除貓精靈,然後找到一個火箭小精靈,一個UFO精靈和一個導彈精靈。 如果你喜歡,可以使用下面的那些,在網上搜索,甚至自己繪製。
1. 將您的每個精靈導入Scratch
2. 通過更改腳本窗格中的名稱來重命名精靈:
3. 精靈也需要調整大小。 您可以使用縮小精靈工具shrink sprite
tool來執行此操作:
4. 最後,你應該旋轉火箭和導彈精靈,所以他們都指向屏幕的右側。 您可以通過編輯服裝選項卡中的精靈並選擇 rotate
tool:來完成此操作:
Coding the rocket
1. 為了編寫你的遊戲,你可以先添加一些腳本到火箭。 因為您希望遊戲能夠一遍又一遍地播放,您應該通過使用廣播塊broadcast
block來啟動它。 您還需要創建一個名為 score
的變量,並在遊戲開始時將其設置為0:
2. 要開始遊戲,火箭需要放在屏幕中央,指向右側:
3. 接下來,您需要控制火箭的旋轉。 這將由加速度計從micro:bit讀取,特別是從x傳感器值the x
sensor value來決定。 目前這個值在-1000到1000之間,所以需要減少一點。 創建一個名為turn
的新變量,並將其設置如下所示:
4. 測試你的遊戲到目前為止:當你傾斜micro:bit左邊和右邊,火箭應該旋轉。 如果它不工作,請嘗試重新啟動您的Raspberry Pi上的Python 3程序,並用其程序重新閃爍micro:bit。 您可能還必須檢查micro:bit是否未重新連接到其他端口; 您可以使用命令 ls /dev/ttyA*
檢查。
5. 接下來,你想要火箭移動。 速度可以通過the micro:bit傾斜向前或向後的距離來確定。 您可以使用y傳感器值y
sensor,但是如前所述,您需要稍微減小一些值(在本例中為此)。
6. 現在通過將micro:bit左右傾斜,向前和向後傾斜來測試飛行控制。
Coding the UFO
1. 不明飛行物需要在隨機位置開始,然後在火箭後追逐。 這很容易設置。 Scratch舞台The Scratch stage
從水平(x軸)約-250到250,垂直(y軸)伸展到-180到180,所以在這些範圍內挑選兩個隨機數將使你能夠定位火箭:
2. 接下來,您可以使用永久循環forever
loop來獲取UFO來追踪火箭:
3. 在一分鐘之內,你將編寫導彈在不明飛行物上發射。 如果導彈擊中了UFO,遊戲應該重新開始,玩家的得分應該增加一個。 需要一個新的腳本:
4. 要完成UFO,遊戲需要結束,如果它捕獲火箭:
Coding the missile
要使導彈始終指向正確的方向,您可以使其與火箭的方式完全相同:
1. 接下來,每當按下微型按鈕the a
button時,導彈都應該起火。 為此,您可以將其移動到火箭的位置,告訴它顯示show
,然後向前移動,直到它觸摸到UFO或屏幕邊緣。 飛行時需要進行轉彎,否則導彈的旋轉與火箭不同步。
2. 測試你的火箭發射導彈的新能力。
What
遊戲有很大的潛力得到改善。
你可以添加一些障礙,讓火箭和UFO避免嗎?
您仍然需要找到b按鈕的用途。 也許這可以開始一個渦輪增壓模式,火箭飛得更快?
UFO可以每天在火箭上射出激光束嗎?
Microbit 中文 課程 : Python , Javascript, 物聯網 , 樹莓派
標籤:
—————