本次使用该板卡完成的是任务二:
设计一个摩斯密码练习器,选择两个按键为点与横,在LCD屏幕上随机出现一个字符,然后输入对应的摩斯密码,当输入正确时,蜂鸣器响;当输入错误时,振动电机发出振动。
本次实现逻辑为:右边上面的绿色按键按下表示输入"_",右边下面的绿色按键按下表示输入".",当输入结束后5秒钟,系统会对输入结果进行判断,当输入结果正确时,蜂鸣器发出提示音,同时进入下一轮游戏;当输入结果错误时,振动电机进行振动提示,同时屏幕显示正确的结果,游戏结束。
1. 初始化操作,主要进行如下处理
- 创建两个精灵,并将它们在屏幕上的指定位置显示
- 初始化运行过程中需要用到的一些全局变量
- 初始化编码表
- 调用refresh_question函数进行问题刷新
关于编码表内容比较长,将python代码贴在下面
morse_table_2: List[str] = [] morse_table_1: List[str] = [] morse_table_1 = ["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", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "?", "/", "-"] morse_table_2 = ["._", "_...", "_._.", "_..", ".", ".._.", "__.", "....", "..", ".___", "_._", "._..", "__", "_.", "___", ".__.", "__._", "._.", "...", "_", ".._", "..._", ".__", "_.._", "-.__", "__..", ".____", "..___", "...__", "...._", ".....", "_....", "__...", "___..", "____.", "_____", "..__..", "_.._.", "_...._"]
其实就是创建了morse_table_1以及morse_table_2两个表,两个表依照相同的顺序依次存放字符和电码符号,字符与电码符号内容如下图所示:
2. 按键处理函数
如下为按键A被按下时执行的操作,将input_data的末尾添加一个"_",然后让精灵muSprite2说出input_data,最后将启动idle_cout进行计数
按键B的执行操作类似于A,只不过在末尾添加的是一个".",这里不再赘述。
3. 问题更新函数
这个函数的目的就是在编码表中随机选择一个字符,然后由精灵msSprite说出来
4. 编码转换表
用于分别实现电码符号到字符、字符到电码符号的转换操作
5. 游戏更新函数
这个函数每隔1秒钟执行一次,主要罗就是判断空闲时间是否超过5秒钟,如果超过了就进行输入检查,检查精灵2说的电码符号是否和精灵1说的字符相匹配,如果匹配就执行成功函数,否则执行失败函数。
6. 执行结果函数
error_handle这个函数用于执行输出错误时的操作,主要是显示正确的电码符号,然后控制振动电机运行500ms
success_handle函数用于执行正确时的操作,主要是在屏幕上显示正确的提示信息,然后驱动蜂鸣器播放音乐。
1. 如下,为精灵1随机选择一个字符说出来,接下来等待精灵2说出对应的电码符号
2. 如下界面为精灵2说出电码符号
3. 当超过idle时间时,检查答案是否正确,错误时输出正确
4. 当回答正确时,输出正确提示信息,然后通过蜂鸣器播放音乐
总体而言,体验还是不错的。借助本次活动的机会,第一次尝试到了图形化拖拽编程,这种方式很适合没有编程基础的初学者建立编程的基本概念,过程很有趣。但是,对于熟悉编程的人而言,这种方式反而对于实现的局限比较大,自由度不够。并且线上编程工具,为了在方块、python、js中间来回转换,做了很多取舍,导致实际使用过程中,用起来比较奇怪。
工程链接
https://makecode.com/_WTyJJhUCr03E