Gestures

在Microbit上的一个加速计有附加功能--------手势感应。当你向某个方向移动Microbit时,Micropython是可以识别出来的。

Micropython能够识别以下手势:

up,down,left,right,face up,face down,freefall,3g,6g,8g,shake

上下左右正面反面自由式(自由落体),这些手势的表示方式为字符串,大多数都是很容易理解的。比较陌生的3g,6g,8g这些手势是指重力系数。

accelerometer.current_gesture()方法可以实现对当前动作的抓取。所呈现的结果为已命名的手势列表中的任意项。举例说明,当你的设备正面朝上时,这个项目会让Microbit呈现笑脸。

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"face up"一致(在Python语言中==表示相等,=则表示赋值)。如果所做的手势完全符合"face up",那么Microbit将会呈现出笑脸。反而言之,则是愤怒脸。

Magic-8

Magic-8是出现于1950年的玩具球,设计理念基于问是与非,摇一摇然后等它揭示答案。用Microbit也可以轻松实现该应用。

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值。摇动Microbit,if条件将进入能够清屏的代码块并等待1秒(就像Microbit能够思考一样)然后显示随机筛选的答案。