Skip to content

活動

群組傳送鴨子

中等級數 | MakeCode, Python | 加速計, 無線電 | 布爾邏輯, 無線電波, 通訊

步驟1:製作

這是什麼?

使用廣播進行“熱土豆”或熱鴨小組遊戲!

3片micro:bit,其中1個被搖晃並在其LED顯示螢幕上顯示一隻鴨子

運作方式

  • 就像傳送鴨子遊戲一樣,它使用radio透過micro:bit之間的空中發送“鴨子”。 這個遊戲只適用於 2 個玩家,因為它會向每個人發出相同的訊息 – 很快您就會發現幾乎每個人都有一隻鴨子,而且任何人都可以扔出一隻。
  • 如果您有2位以上的玩家,那麼每個micro:bit都需要選擇一種方法來選擇哪個玩家將獲得成功,因此每個玩家的程序都有一個唯一的ID號,從1開始。
  • 我們將其儲存在名為 ID 變數中,在將程式刷新到他們的micro:bit上之前,您需要為每個播放器分別設置為2 、3、4,等。
  • players 變量設置為人數,以確保每個人都有機會得到鴨子。 程式開始時在 LED 螢幕上顯示玩家的 ID 號碼,這樣您就知道誰有哪個號碼。
  • 為確保只有擁有鴨子的玩家才能將其卡住,該程式僅在搖動它時才發送一條消息,如果您有鴨子的話。 它使用一個叫布爾變數hasDuck 來追蹤這一點。 布爾變數只能有兩個標準值:真或偽。 開始時,只有 1 號玩家擁有鴨子,其他人都不能扔。
  • 當玩家1搖動其micro:bit時,程式將生成一個介於1和玩家數量之間的隨機數。 如果隨機數字不等於她自己的 ID 號碼,它將透過無線電發送新的 ID 號碼,清除她的螢幕,並且將她的 hasDuck 變數設定為「偽」。
  • 如果隨機數等於她自己的ID,則需要再次拋出,但這比鴨子被發送給自己更好-而且在異次元迷路了!
  • 如果您的 micro:bit 收到一個數字,它將檢查它是否等於(匹配)您的 ID 號碼。 如果是這樣的話,恭喜,您現在擁有鴨子了! 當一隻鴨子出現在您的 LED 螢幕上,您的 hasDuck 變數被設定為正確,這表示您現在可以把鴨子扔給別人了。
  • 請負責任地抓鴨子:確保您在玩這款遊戲時不要掉落micro:bit或撞到朋友。

你需要的東西

  • 3個或更多micro:bit
  • MakeCode 或, Python 編輯器
  • 電池組(選配)
  • 一群人一起玩

步驟2:編碼

1from microbit import *
2import radio
3import random
4
5radio.config(group=42)
6players = 3
7ID = 3
8display.show(ID)
9if ID == 1:
10    hasDuck = True
11else:
12    hasDuck = False
13radio.on()
14
15while True:
16    message = radio.receive()
17    if accelerometer.was_gesture('shake'):
18        if hasDuck:
19            sendTo = random.randint(1, players)
20            if sendTo != ID:
21                display.clear()
22                radio.send(str(sendTo))
23    if message:
24        if message == str(ID):
25            hasDuck = True
26            display.show(Image.DUCK)
27        else:
28            hasDuck = False
29    

步驟3:進階

  • 更改程序以發送其他內容而不是發送鴨子。
  • 目前,如果它挑選了一個與您自己的 ID 號碼相同的隨機號碼,您必須再次搖動。 修改程式以便永遠不會再發生這種情況。 可能有不止一種方法可以做到這一點。
  • 1 號玩家總會在遊戲開始時擁有鴨子。 您能否修改程式,讓第一個拿著鴨子的玩家被隨機選中? 您將如何向每位玩家的 micro:bit 傳達這一點?