Skip to content

活动

多人传送鸭子

中级 | MakeCode, Python | 加速计, 无线电 | 布尔逻辑, 无线电波, 通信

第 1 步:制作

这是什么?

使用无线电进行的hot potato团体游戏或 hot duck !

3个micro:bit,摇动其中一个micro:bit 其LED显示屏上显示一只鸭子

工作原理

  • 就像传送鸭子游戏一样,它使用无线电在micro:bits之间发送“鸭子”。 该游戏只能有2位玩家,因为它会向所有人发送相同的消息-很快你就会发现几乎每个人都有一只“鸭子”,任何人都可以发出一只“鸭子”。
  • 如果有2位以上的玩家,那么每个micro:bit都需要有一种方法来选择哪个玩家将获得鸭子,因此每个玩家的程序都有一个唯一的ID,从1开始。
  • 我们将其储存在一个变量中,变量名为ID。您需要在将程序下载到每个玩家的micro:bit上之前,将其ID更改为2 、3、4...。
  • 设置 players 变量为参与游戏的人数,以确保每个人都有机会得到鸭子。 该程序会在开始时在LED显示屏上显示玩家ID号,以便您知道各人的编号。
  • 为确保只有拥有鸭子的玩家才能将其抛出,仅您有鸭子的时候,摇动Microbit时它才会发送讯息。 它使用Boolean变量对此进行追踪,变量名为hasDuck。 Boolean变量只能有两个值:True或False。 游戏开始时,只有玩家1拥有鸭子,没有其他人可以抛鸭子。
  • 当玩家1摇动其micro:bit时,程序将产生一个介于1和玩家总数量之间的随机数。 如果随机数不等于她自己的ID,则它将通过无线电发送新的ID,清除她的屏幕并将她的hasDuck变数设置为False。
  • 如果随机数等于她自己的ID,则她需要再次抛出,但这比鸭子被发送给自己更好-并在多维空间中迷路!
  • 如果您的micro:bit接收到一个数字,它会检查该数字是否等于(匹配)您的ID号。 如果相等的话,恭喜,您现在有了鸭子! 鸭子会出现在您的LED显示屏上,并且您的hasDuck变量将被设置为True,这意味着您现在可以将鸭子抛给其他人了。
  • 请负责任地抛鸭子:确保您在玩这款游戏时不会使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 步:完善它

  • 更改程序以发送其他物品而不是ducks。
  • 目前,如果它选择的随机数与您自己的ID相同,则您必须重新摇一摇。 修改程序以便永远不会发生这种情况。 可能有不止一种方式来实现。
  • 玩家 1 总是 在游戏开始的时候拥有duck. 您能否改进程序,以便随机选择第一个拥有鸭子的玩家? 您将如何与其它玩家的micro:bit通讯?