手势

加速度计真正有趣的副作用是手势检测。如果您以某种方式(作为手势)移动 BBC micro:bit,则 MicroPython 能够检测到这一点。

MicroPython 能够识别以下手势:up, down, left, right。手势始终表示为字符串。虽然大多数名称应该很明显,但当设备遇到这些级别的重力时(例如当宇航员被发射到太空时),,和手势适用。 face up, face down, freefall, 3g, 6g, 8g, shake3g, 6g8g

要获取当前手势,请使用该 accelerometer.current_gesture方法。它的结果将是上面列出的命名手势之一。例如,此程序只会使您的设备正面朝上时满意:

from microbit import *

while True:
    gesture = accelerometer.current_gesture()
    if gesture == "face up":
        display.show(Image.HAPPY)
    else:
        display.show(Image.ANGRY)

再一次,因为我们希望设备对不断变化的环境做出反应,所以我们使用while循环。在循环范围内,当前手势被读取并放入 gesture. 该 if 如果条件检查gesture等于(Python使用测试平等,一个等号用于分配-就像我们如何分配的姿态读数的对象)。如果手势等于, 则使用显示屏显示一张快乐的脸。否则,设备看起来很生气! "face up"===gesture "face up"

魔术-8

Magic-8 球是 1950 年代首次发明的玩具。这个想法是问它一个是/否问题,摇晃它并等待它揭示真相。变成程序相当容易:

from microbit import *
import random

answers = [
    "It is certain",
    "It is decidedly so",
    "Without a doubt",
    "Yes, definitely",
    "You may rely on it",
    "As I see it, yes",
    "Most likely",
    "Outlook good",
    "Yes",
    "Signs point to yes",
    "Reply hazy try again",
    "Ask again later",
    "Better not tell you now",
    "Cannot predict now",
    "Concentrate and ask again",
    "Don't count on it",
    "My reply is no",
    "My sources say no",
    "Outlook not so good",
    "Very doubtful",
]

while True:
    display.show("8")
    if accelerometer.was_gesture("shake"):
        display.clear()
        sleep(1000)
        display.scroll(random.choice(answers))

大多数程序是一个名为answers. 真正的游戏在最后的 while循环中。

游戏的默认状态是显示角色"8"。但是,程序需要检测它是否被震动。该was_gesture方法使用它的参数(在本例中是字符串,"shake" 因为我们想要检测震动)返回一个 True / False响应。如果设备被摇晃,则if 条件下降到其清除屏幕的代码块中,等待一秒钟(因此设备似乎在考虑您的问题)并显示随机选择的答案。

为什么不问问它是否是有史以来最伟大的程序?你能做些什么来“作弊”并使答案总是肯定的或否定的?(提示:使用按钮。)