内容介绍
内容介绍
介绍
本次使用Kitronik ARCADE做了一个摩斯电码练习器。
启动后,屏幕上会产生一个随机字符串,包含四个字母。玩家需要敲击左右键输入摩斯电码,左键代表'.',右键代表'-'。输入的信息会显示在屏幕上,若输入的电码正确,ARCADE会响起声音,否则会震动马达。同时显示正确结果。
实现
代码由Python实现。
首先定义了两个数组,分别表示字母表和其对应电码。然后生成随机字符串,显示在屏幕上。最后在循环中检测左右两个按键是否按下,记录按键结果,显示在屏幕上,并判断是否与字符串匹配或者按键错误。
press = ""
str_arr = ""
mySprite = sprites.create(img("""
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
"""),
0)
answerSprite = sprites.create(img("""
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
"""),
0)
inSprite = sprites.create(img("""
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
"""),
0)
answerSprite.set_position(0, 50)
inSprite.set_position(0, 100)
morse_code_key = ["A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z"]
morse_code_val = [".-",
"-...",
"-.-.",
"-..",
".",
"..-.",
"--.",
"....",
"..",
".---",
"-.-",
".-..",
"--",
"-.",
"---",
".--.",
"--.-",
".-.",
"...",
"-",
"..-",
"...-",
".--",
"-..-",
"-.--",
"--.."]
key = [randint(0, 25),
randint(0, 25),
randint(0, 25),
randint(0, 25)]
str_arr = "" + str_arr + morse_code_key[key[0]]
str_arr = "" + str_arr + morse_code_key[key[1]]
str_arr = "" + str_arr + morse_code_key[key[2]]
str_arr = "" + str_arr + morse_code_key[key[3]]
mySprite.say(str_arr)
while True:
if controller.player1.is_pressed(ControllerButton.LEFT):
press = "" + press + "."
elif controller.player1.is_pressed(ControllerButton.RIGHT):
press = "" + press + "-"
val = "" + morse_code_val[key[0]] + morse_code_val[key[1]] + morse_code_val[key[2]] + morse_code_val[key[3]]
inSprite.say(press)
if press == val:
music.play_tone(262, BeatFraction.HALF)
answerSprite.say(val)
elif len(press) >= len(str(val)):
pins.pin_by_cfg(101).digital_write(True)
answerSprite.say(val)
pause(100)
展示
上图为启动后的界面。
上图为一次输入错误,可看到下方的输入和上方的正确结果。
上图为一次输入正确。
心得体会:
这个平台非常适合小朋友入门编程,寓学于乐。
附件下载
source.py
团队介绍
评论
0 / 100
查看更多