Skip to content

活动

热和冷游戏

中级 | MakeCode, Python | LED显示器, 按钮, 无线电 | 数据类型, 通信

第 1 步:制作

它是什么?

利用BBC micro:bit的无线电功能实现这个有趣双人游戏。

学习目标

通过这个项目,您将学到:网络,电子设备如何通过无线电在彼此间传递信息,以及电脑如何以不同数据类型存储信息(比如说将单词以字符串的方式存储)。

工作原理

  • 这是一个两人游戏。 一个人把宝藏(任意一个东西)藏起来,然后给搜寻者(另一个人)线索:搜寻者和宝藏很接近时,要提示说“热”;搜寻者远离宝藏时,要提示说“变冷了”;搜寻者靠近宝藏时,要提示说“变暖了”。
  • 一般来说,藏宝人得靠喊来提示“热”、“变冷了”和“变暖了”。但在我们这个版本里,这些提示将通过无线电,从一个micro:bit发送到另一个micro:bit上,并显示在LED显示器上。
  • 我们需要编写两个程序,一个给藏宝人用,另一个给搜寻着用。
  • 首先,两个程序都要将自己的无线电组设置为47. 组就像频道,因此,使用位于同一组的micro:bit才会收到消息。 你可以在0-255之间选择任何你喜欢的组号。
  • 藏宝人按下按钮A,能发送提示信息“变暖了”;按下按钮B,发送“变冷了”;同时按下按钮A和按钮B,发送“热”。
  • micro:bit可以发送数字或文本类型的信息。 我们在这个项目里使用文本类型信息,因此确保您使用的无线电代码块,无论是发送还是接收,都使用参数类型 字符串 类型的,而不要使用 数字 类型或者 类型的。
  • 在电脑的世界里,一个字符串是一串字符,可以包含字母、数字、符号和各种空格。
  • 搜寻者的micro:bit接收到一条无线电信息后,它会在自己的LED显示屏上显示它收到的这条信息。 同时,这条信息也会在藏宝人的micro:bit的LED显示屏上显示。

所需材料

  • 2个micro:bit主板
  • MakeCode编辑器
  • 电池组(推荐)

第2步:编程

藏宝人的程序代码

1# Imports go at the top
2from microbit import *
3import radio
4radio.config(group=47)
5radio.on()
6
7while True:
8    if button_a.is_pressed() and button_b.is_pressed():
9            radio.send('HOT!')
10            display.scroll('HOT!')
11    elif button_a.is_pressed():
12        radio.send('warmer')
13        display.scroll('warmer')
14    elif button_b.is_pressed():
15        radio.send('colder')
16        display.scroll('colder')
17    sleep(100)

搜寻者的程序代码

1# Imports go at the top
2from microbit import *
3import radio
4radio.config(group=47)
5radio.on()
6
7while True:
8    message = radio.receive()
9    if message:
10        display.scroll(message)
11    sleep(100)

第 3 步:完善

  1. 编辑程序,使用不同的单词来取代代码里的”hot“(热)、”colder“(变冷了)和”warmer“(变暖了). 例如,你可以用你正在学习的外语来使用“hot”、“colder”和“warmer”。
  2. 给您的程序添加声音效果。
  3. 给您的程序加上计时器或者计数器,看看您能多快找到宝藏。