Funpack第十期_Kitronik-ARCADE_摩斯密码练习器
使用Kitronik ARCADE可编程游戏机设计一个莫斯密码练习器
标签
嵌入式系统
vic
更新2021-08-31
877
实现功能

   本次使用该板卡完成的是任务二:

   设计一个摩斯密码练习器,选择两个按键为点与横,在LCD屏幕上随机出现一个字符,然后输入对应的摩斯密码,当输入正确时,蜂鸣器响;当输入错误时,振动电机发出振动。

   本次实现逻辑为:右边上面的绿色按键按下表示输入"_",右边下面的绿色按键按下表示输入".",当输入结束后5秒钟,系统会对输入结果进行判断,当输入结果正确时,蜂鸣器发出提示音,同时进入下一轮游戏;当输入结果错误时,振动电机进行振动提示,同时屏幕显示正确的结果,游戏结束。

代码片段解释

1. 初始化操作,主要进行如下处理

  • 创建两个精灵,并将它们在屏幕上的指定位置显示
  • 初始化运行过程中需要用到的一些全局变量
  • 初始化编码表
  • 调用refresh_question函数进行问题刷新FowmXy8CDjAEYLj_6zBt9vL-lEXP

    关于编码表内容比较长,将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两个表,两个表依照相同的顺序依次存放字符和电码符号,字符与电码符号内容如下图所示:

        FpUhy9jtA4DGTHUJuEcTZPeCjaeJ

2. 按键处理函数

       如下为按键A被按下时执行的操作,将input_data的末尾添加一个"_",然后让精灵muSprite2说出input_data,最后将启动idle_cout进行计数

FvQJOGSUPaEd2VzxsM851NwmpF2O

      按键B的执行操作类似于A,只不过在末尾添加的是一个".",这里不再赘述。

FjVeKHXNHRwWLE5httT4B25PRKny

3. 问题更新函数

      这个函数的目的就是在编码表中随机选择一个字符,然后由精灵msSprite说出来

Fs_GgfDVBU5zXQj7EinFOVY9wOZV

4. 编码转换表

      用于分别实现电码符号到字符、字符到电码符号的转换操作

FmnVL2S2_KVIwKG11RbHEuvlQLAW

Fr9MjyZ6ZODQG-82GAym5GN73o7l

5. 游戏更新函数

      这个函数每隔1秒钟执行一次,主要罗就是判断空闲时间是否超过5秒钟,如果超过了就进行输入检查,检查精灵2说的电码符号是否和精灵1说的字符相匹配,如果匹配就执行成功函数,否则执行失败函数。

FkzOwYEc3eqmbhJxNUzACx3VAXKH

6. 执行结果函数

   error_handle这个函数用于执行输出错误时的操作,主要是显示正确的电码符号,然后控制振动电机运行500ms

FstuT03HnfROXciJPyovbvzg6b1k

      success_handle函数用于执行正确时的操作,主要是在屏幕上显示正确的提示信息,然后驱动蜂鸣器播放音乐。

FuWLl-N7m1ai6ky6QFYWrDbf9e6s

功能展示及说明

1. 如下,为精灵1随机选择一个字符说出来,接下来等待精灵2说出对应的电码符号     

       FgLGTPj2lmpO3lo9BMB-Jel2nx6r

2. 如下界面为精灵2说出电码符号   

       FiNGrbgQej2Qtzx8j9FUkYpPPgLm

3. 当超过idle时间时,检查答案是否正确,错误时输出正确

      FggZkAur0QyKZIxnMwm_CtnkTJLl

4. 当回答正确时,输出正确提示信息,然后通过蜂鸣器播放音乐

         FoF0aIxGtMqP20xB_6glhb_kY_fm

心得体会

   总体而言,体验还是不错的。借助本次活动的机会,第一次尝试到了图形化拖拽编程,这种方式很适合没有编程基础的初学者建立编程的基本概念,过程很有趣。但是,对于熟悉编程的人而言,这种方式反而对于实现的局限比较大,自由度不够。并且线上编程工具,为了在方块、python、js中间来回转换,做了很多取舍,导致实际使用过程中,用起来比较奇怪。

工程链接

   https://makecode.com/_WTyJJhUCr03E

附件下载
arcade-test .uf2
示例游戏的可烧录固件
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号