最新消息:

Scratch3.0实现打字练习程序

Scratch 少儿编程 3233浏览 0评论

友情提示:视频教程观看时请手动设置清晰度。

前几次课都是有了一个idea,程序实现后先录制成课,再回来写相关文章,可是几次下来发现懒惰成性,有些课程内容一拖再拖还没补上,这回实现后决定逆向而行,先写好文章,再去录制课程。

 

本节课制作的是一个打字练习程序,实现的效果就是一个角色随机说出列表中的一个英文单词(currentword),在指定时间内,用户可键入字符串,按”空格”结束,如果指定时间未到,并且输入的单词与给出的词吻合,则分数(score)加1,提示”Bingo!”,给出新单词。时间超时还未输全字符串或输入错误,则减1,之后打出新的单词。

Scratch3.0实现打字练习程序

做出来的舞台效果如上图,键盘上飘的那角色是朵云啦,就是负责说出列表中随机单词的家伙,也许录课时该换个动物角色…

 

进入正题,首先是制作按键A的角色。删掉原有的小猫角色,添加新角色,在提供的角色选项中选择长方形按钮,然后进入角色的”造型”分页中调节为合适的按键形状,再在上面输入字母”A”,然后添加个新的造型,将第一个造型的图像复制到新造型里,点选填充按钮,将按键背景换个颜色来区分按键是否被按下。

 

Scratch3.0实现打字练习程序

 

绘制完造型2后,鼠标再次点中造型1后再回到”代码“分页进行功能块的操作。

 

在程序启动时,要随时判断按键A是否被按下,如果按下就要把造型变成造型2:keyPressed,按下之后需要将该字母连接到一个”适用于所有角色”的变量myinput中,这个变量用来存放用户由键盘输入的字符串,这个字符串是每次按键时将myinput中已有的字符串和新输入的字母连接而成,每一次换到新的单词时它都会先被清空。

 

按键成立后,不要忘记在将角色的造型还原成初始的造型1:key,还原之前可以等待很短的时间来改善显示效果,这部分功能块组合如下图:

 

Scratch3.0实现打字练习程序

对按键A的编程完成后就可以通过在角色面板中选中按键A角色后按鼠标右键,弹出菜单中点击”复制”。

 

Scratch3.0实现打字练习程序

复制出其他25个相同的角色后,分别对这25个角色进行修改,首先在它们的”造型”分页中将字母各自变成B、C、D…Z,然后各自修改功能块中的两个地方为对应的按键字母(下图红框部分)。例如,下图显示了按键B角色对应的功能块组合:

 

Scratch3.0实现打字练习程序

 

添加完26个字母后,可以将它们在舞台上按照电脑键盘实体的位置来摆放。

 

如何存储练习的英文单词呢?可能出于安全因素的考虑,Scratch目前还没有提供读写本地文件的功能,还好在”变量”功能块区域中有”建一个列表”可以选择,创建一个名为words的列表,它需要适用于所有角色,点击+,将不同的单词添加到列表中,完成添加后可以去掉勾选将该列表隐藏起来。

 

Scratch3.0实现打字练习程序

这时候,该添加会说话的浮云了。当程序启动后,浮云就要负责不断从先前建的列表中随机选出一个单词,存入变量currentword,将它显示。在实现此功能时我本想使用”询问”和”回答”两个功能块:

 

Scratch3.0实现打字练习程序

但实践时发现在按键时对应的按键角色并没有切换造型为按下的效果,所以怀疑它们可能和按键的侦测有所冲突,因此选择使用”外观”里的”说”功能块。

当浮云说出单词后,理想情况下,用户通过键盘输入同样的单词到myinput中,然后按空格键作为判断的信号,跳出等待输入的循环,将myinput的值和currentword进行比较,看输入单词是否包含currentword,如果包含,score+1,显示”Bingo!”,如果不包含,score-1,另一个跳出等待输入的循环的条件是如果计数变量count的值>3,即:如果用户没来得及按下”空格”,限制时间就到了,这里我通过循环中等待1秒并且count+1来控制限定时间。以下是这部分的功能块组合:

 

Scratch3.0实现打字练习程序

其实做到这里还有可以优化之处,在判断键盘输入是否与随机单词吻合时这里只是做了简单判断是否包含,若要更严格,添加判断对应的两个字符串的长度是否相等即可,至于如何实现,到时我会加入视频中讲解。

编程有时是一个不断调试、不断尝试的过程,向这个例子当中一些地方加入了”等待0.2秒”这样的功能块,它可能并不起到什么逻辑作用,但显示的效果要比没有时好,为何是0.2,则是要调试后才知。有时候,编程又是不断Ctrl+C,Ctrl+V的机械过程,这里的25个字母,就是通过复制按键A的角色,不断重复相同的动作来实现的。当程序完成时,会有一种满足感吧,之前体验的这些过程都是值得的。

转自公众号:
退役程序员的茶室

您必须 登录 才能发表评论!