背景
最近尝试一边自学Scratch,一边尝试教给小孩,看他打字时在键盘上乱打一气,想起来自己小时候玩过的学习机打字母游戏,就想给他下载一个。结果网上看到的代码,要么质量太差(有26个字母就要写 26 个判断,会把小孩水平教坏 😦 ),要么还要收钱才能下载。就决定自己写一个。
功能
- 可以按需选择想要练习的字母范围 ( A-Z 中的任意连续字符, 从而方便逐渐练习)
- 程序开始后从屏幕上方随机产生字母,逐渐下落。
- 在字母掉落到最下面前按对应按键,会将火箭移动到字母下,发射闪电消灭字母。
- 可以设置最大血量,当未打中的字母数量达到指定量时,游戏失败
核心代码
- 在屏幕最顶端产生随机字母,使用私有变量(
随机初始字母
)保留当前字母对应的值,从而判断按键
- 作为克隆体启动时,一直往下掉,并检测是否被消灭或超出屏幕范围
- 按键判断的核心,检测到自己对应的字母被按下时,设置火箭要移动到的位置
- 闪电的代码:移动到
消灭目标_X
的位置后,克隆出向上发射的火箭。为了避免将还在空中飞的闪电也移动,使用了 y坐标=-130(初始值) 的方式判断,个人感觉不是很好,但没有找到更好的办法。
已知Bug
- 如果屏幕中同时存在多个相同的字母,始终会给位置高的字母发射火箭,直到其被消灭后才会给位置低的字母发射闪电,似乎和多个克隆体的执行顺序有关。已经尝试过 设置
已发射子弹
标志, 计算Y坐标位置等方式,但都不能解决。理论上说,通过设置列表变量跟踪的方法可能能解决,但感觉复杂度又上去了,就没有更改。看是否有高手能解决。
源码下载
- https://gitee.com/fishjam/scratch