内容介绍
内容介绍
- 介绍用本板卡最终实现了什么功能
用板卡实现了题目2中的功能:
1.两种输入方式:a.左键为嘀,右键为嗒;b.下键为嘀嗒二合一,小于180ms为嘀否则为嗒。上键为确认键,B键为清除键,菜单键为功能切换。
2.摩斯密码输入显示功能;
3.摩斯密码练习功能,此功能屏幕会出现3~5个随机字符,输入正确蜂鸣器会播放正确音,输入错误蜂鸣器会播放错误音并电机振动;
以上两个功能通过菜单键进行切换,屏幕有随机字符的时候为练习模式,屏幕没有随机字符的时候为输入显示模式。
- 各功能对应的主要代码片段及说明
依赖的扩展arcade-text、timer、controller。
1.输入部分:
下键的处理代码,用于实现二合一功能:
def on_down_pressed():
global key_pressed_time
key_pressed_time = game.runtime()
def on_down_released():
global key_timeout, key_value_list, key_pressed_time
key_timeout = game.runtime() - key_pressed_time
if key_timeout >= 180:
key_value_list = "" + key_value_list + "-"
else:
key_value_list = "" + key_value_list + "."
if len(key_value_list) > 10:
key_value_list = key_value_list.substr(-10, 10)
# key_value_list = key_value_list.slice(-10)
key_pressed_time = 0
左右键的功能实现
def on_left_pressed():
global key_value_list
key_value_list = "" + key_value_list + "."
if len(key_value_list) > 10:
key_value_list = key_value_list.substr(-10, 10)
# key_value_list = key_value_list.slice(-10)
def on_right_pressed():
global key_value_list
key_value_list = "" + key_value_list + "-"
if len(key_value_list) > 10:
key_value_list = key_value_list.substr(-10, 10)
# key_value_list = key_value_list.slice(-10)
上键,通过查找表实现转码:
def on_up_pressed():
global string, key_value_list
# transform charactor from morse code.
for k in morse_key_table:
if k == key_value_list:
string = "" + string + morse_value_table[morse_key_table.index(k)]
if len(string) > 10:
string = string.substr(-10, 10)
# string = string.slice(-10)
break
if game_mode != 0:
do_compare()
key_value_list = ""
练习模式匹配代码:
def do_compare():
global string, target_string
if len(string) >= len(target_string):
if string == target_string:
music.ba_ding.play()
string = ""
target_string = ""
for index in range(randint(3, 5)):
target_string = "" + target_string + morse_value_table[randint(0, len(morse_value_table))]
else:
pins.A1.digital_write(True)
music.sonar.play()
# controller.vibrate(500)
# error input
string = ""
elif target_string.substr(0, len(string)) != string:
pins.A1.digital_write(True)
music.sonar.play()
# controller.vibrate(500)
# error input
string = ""
def on_after():
pins.A1.digital_write(False)
timer.after(100, on_after)
- 功能展示
显示功能:
如下图,输入 ".-",然后按上键,就能得到字符"A"
练习模式:
按菜单键后屏幕会出现随机字符,如下图:
当输入不正确的字符时,字符会被清空,然后播放错误音及电机振动,当输入正确时会播放正确音,随机字符串会被更新:
打出自己的ID:
- 对本活动的心得体会(包括意见或建议)
本次活动主要使用了python及图形化编程,python的语法支持应该是精简过的,有些语法不支持,扩展里的东西不能随便引用,可能造成未知的问题(暂时不知道什么原因)。关于硬件方面,我手里的设备用电池供电无法点亮屏幕,具体原因没有去排查,群里的朋友也遇到过各种硬件相关的问题,还是希望提高一下品控。最后感谢举办方提供的这次活动。
附件下载
funpack10.py
实现的代码,依赖arcade-text、timer、controller
团队介绍
个人团队
评论
0 / 100
查看更多