中文 | English

讓 micro:bit , 成為專屬電腦遊戲控制器! 一起 來試試 MicroBike

譯者:江宗諭

這個專案,可讓你的 micro:bit 成為電腦遊戲的控制器!心動了嗎?但為了讓程式碼運作順暢,首先,你必須在電腦上,安裝 2 個 python 模組:

  • PyUserInput:這是一個專門針對跨平台控制滑鼠和鍵盤而設計的模組,讓使用者可在 python 中控制它們。
  • David Whale 先生的 bitio library:讓你可以在 PC / Mac / Linux /樹梅派上運作 python 程式碼,並且直接與 micro:bit 互動。(特此感謝 David Whale 先生的貢獻!)

    安裝好模組之後,又該如何進行呢?請參照以下步驟:

第一步:設定你的 PC

  • 如果你的電腦尚未安裝 python ,請至這個網站下載、安裝 python2.7.0 。
  • 如果你的電腦尚未安裝 Pip ,請按照網頁中指令安裝它。什麼是 Pip 呢? Pip 是一個針對 python 的套件管理員( Package Manager ),能讓電腦非常簡單容易地設定 python 套件。
  • 取得 MicroBike 的資料夾,並且安裝所需要的模組。

第二步:使用命令列( Command Line )

  • 首先,打開一個命令列視窗( Command Line Window )。此視窗在 Windows 系統被稱作「 Command Prompt 」;於Mac系統被稱為「 Terminal 」;而在 Linux 系統則稱為「 shell 」或「 terminal 」。
  • 接著,請輸入下列指令:git clone https://github.com/musabkilic/MicroBike

這個指令的作用是什麼呢?主要是從 Git 的倉儲( Git repository )取得最新版本的 MicroBike 程式碼。

  • 然後,於命令列視窗中,瀏覽 MicroBike 的資料夾。需要下什麼樣的指令呢?請使用「 cd command 」,根據你如何在電腦上配置 git ,也許需要更改相關路徑。

cd MicroBike

  • 接下來,請運用下列指令,安裝所需模組。

pip install -U -q -r requirements.txt

若你對於使用命令列還不是那麼熟悉的話,可以參考下方影片,裡面將示範如何使用命令列:

第三步:設定好 bitio 函式庫

    請先參考這份說明文件,然後把 bitio 函式庫設定好。

第四步:設定好你的 micro:bit

  • 請將 micro:bit 連結電腦。
  • 接著,由 bitio 的 git 倉儲取得最新的 bitio.hex 檔案。
  • 將上述的 hex 檔案,拖曳至你的 micro:bit ,好將檔案上傳至 micro:bit 。「上傳檔案至 micro:bit 」這個動作,有個稱為「 Flash 」的專有名詞,若你想對此有更進一步了解,歡迎參考這篇文章
  • 若你使用的是 Window 系統,也需要在電腦上安裝Serial驅動程式

這樣就大功告成囉!!你可以在命令列視窗中輸入:「 python controller.py 」,便可以使用 MicroBike 。

MicroBike 究竟如何運作?

你也許對 MicroBike 的運作感到好奇,就讓我們複習一下 controller.py 中的程式碼,一起搞懂 MicroBike 究竟如何運作!

程式碼:

import microbit

import time

from pykeyboard import PyKeyboard

說明:

我們需要先將模組匯入,以便於需要時運用它們。在 MicroBike 中,我們會運用 3 個模組:

  • micro:bit 模組:用來控制並從 micro:bit 上讀取資料。
  • time 模組:用來等待特定的時間步驟
  • pykeyboard 模組:用來控制鍵盤與遊戲

程式碼:

#Function for Changing a Key

def changeKeyState(key, value, key_name):

         global keyboard_keys

         #Change Only Neccessary

         if value!=keyboard_keys[key_name]:

                 if value:

                          keyboard.press_key(key)

                 else:

                          keyboard.release_key(key)

         keyboard_keys[key_name] = value

說明:

於此要特別說明「 changeKeyState 」這個函式,它可以協助我們控制鍵盤上的按鍵。舉例而言,當我們讓 MicroBike 的控制把往左傾斜,此函式將透過程式,按壓鍵盤上的「左箭頭鍵」。

程式碼:

#Specify Keyboard

keyboard = PyKeyboard()

#Set Accelerometer Values

previous_values = microbit.accelerometer.get_values()

#Set Keyboard Keys

keyboard_keys = {“L”:False,”R”:False,”F”:False,”S”:False}

#Set Images

stable = microbit.Image(“00000:00000:99999:00000:00000”)

images = {“N”: microbit.Image.ARROW_N,

                   “NE”: microbit.Image.ARROW_NE,

                   “NW”: microbit.Image.ARROW_NW,

                   “E”: microbit.Image.ARROW_E,

                   “W”: microbit.Image.ARROW_W,

                   “”: stable}

說明:

在這段程式碼中,我們主要是定義一些變數,好在接下來的程式運用。

程式碼:

#Wait for User to Press a Button

while 1:

         #Blink

         microbit.display.show(microbit.Image.ARROW_W)

         time.sleep(0.5)

         microbit.display.clear()

         #Start the Program if a Button is Pressed

         if microbit.button_a.was_pressed() or microbit.button_b.was_pressed():

                 break

         time.sleep(0.5)

說明:

上方程式碼是程式碼中的第一個迴圈,它會讓 micro:bit 持續閃爍,直到使用者按下 A 或 B 按鈕。當使用者按下按鈕,控制器便開始運作。

程式碼:

#Start the Loop

while 1:

         #Get Accelerometer Values

         accelerometer_values = microbit.accelerometer.get_values()

         x,y,z = accelerometer_values

         #Calculate Avarege Motion in X,Y,Z Directions

         motion = sum(map(lambda x:abs(accelerometer_values[x]-previous_values[x]),range(3)))/3

說明:

上方程式碼是此程式的主要迴圈,藉由取得所需數值,以及計算使用者的動作,我們便可開始使用 MicroBike 。

程式碼:

#Change Direction

         changeKeyState(keyboard.up_key,y>400,”F”)

         changeKeyState(keyboard.right_key,x>60,”R”)

         changeKeyState(keyboard.left_key,x<-60,”L”)

         changeKeyState(keyboard.shift_key,motion>500,”S”)

         #Set Direction to Show

         direction = “”

         if y>400:

                 direction += “N”

         if x>60:

                 direction += “E”

         elif x<-60:

                 direction += “W”

         #Show the Direction

         microbit.display.show(images[direction])

         #Set Current Accelerometer Values to Previous

  previous_values = accelerometer_values

說明:

接著,我們會運用先前取得的資訊,以控制電腦遊戲。當 micro:bit 向右或向左傾斜高於特定的數值時,鍵盤上的按鈕便會被觸發。而我們也將使用同樣資訊,在 micro:bit 上進行方向的改變。

結語

那麼,筆者廢話就不多說了,請讀者趕快動手,體驗一下 MicroBike 的樂趣!!

分享到社群

vMaker編輯部

歡迎各界朋友投稿你的maker故事,不論是個人作品、創客觀點或是創客的經驗分享,我們都十分期待能聽到您的分享。 投稿請至:contact@vmaker.tw