[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第70讲。
蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。
第13届蓝桥杯青少年组第4次选拔赛于2022年1月22日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
跳舞机游戏,本题是2022年1月22日举行的第13届蓝桥杯Scratch选拔赛真题编程第4题,初级组和中级组都有此题,题目要求编程创作一个跳舞机游戏。
先来看看题目的要求吧。
编程实现:
跳舞机游戏。
具体要求:
1). 点击绿旗,舞台左上角显示得分0代表玩家分数,在得分右侧倒计时10代表游戏时长(10s);
2). 游戏开始倒数计时,在舞台上随机显示上、下、左、右四个箭头中的一个,等待1秒后变化其它方向箭头(箭头方向、颜色都是随机改变);
3). 玩家观察舞台上出现的箭头,按下键盘上对应的方向键,箭头方向和按下的方向键一致则分数加1,并且箭头说“正确”,同时显示出箭头出现时到按下对应方向键时的反应时间;
4). 箭头方向和按下的方向键不一致则分数减1,并且箭头说“错误”;
5). 当倒计时为0时,游戏结束,用一个列表“积分榜”来记录每轮游戏的得分;
6). “积分榜”中每轮分数进行比较,其中最高分呈现在舞台上方最高分中;
7). 点击小绿旗,下一轮游戏重新开始(积分榜中数据不变)。
本题只有1个角色,就是箭头,如图所示:
箭头有4种不同的造型,分别为上下左右,如图所示:
本题模拟的是生活中非常好玩的跳舞机游戏,主要包括如下4个核心功能:
随机出现箭头,包括造型和颜色都是随机的;
计时功能,包括倒计时10秒和统计玩家的反应时间;
判断玩家按键和箭头指向是否一致;
计分系统,包括得分、最高分和积分榜。
根据题目描述和思路分析,我们可以分4步来编写程序:
倒计时10秒钟
箭头每隔1秒钟切换一次造型
等待玩家按键并判断对错
计分系统
1. 倒计时10秒钟
首先创建一个变量“倒计时”,将初始值设为10,然后每隔1秒减1,直到减为0,代码如下:
代码非常简单,很多同学喜欢直接使用”重复执行10次“指令,也是可以的。使用“重复执行直到”指令则更加灵活,你可以将倒计时设置为任何其它数字,而不需要修改重复的次数。
2. 切换箭头造型
箭头每隔1秒要切换一次造型,切换方式则是随机的,将切换造型指令和随机数指令结合起来就可以了,同时颜色也会随机变化,对应代码如下:
一旦切换完造型之后,就需要处理用户按键事件,为了简化代码,这里使用了广播机制,将判断按键处理的代码单独拎出来。
3. 等待玩家按键并判断对错
判断的逻辑也比较简单,首先需要判断是否按下了上下左右4个方向键,其次要确定按下的方向键和箭头指向是否一致,如果一致则提示正确,加分并显示反应时间,否则提示错误并减分。
对应的代码如下:
简要说明四点:
1). 在接收到“判断”的广播消息之后,使用了等待条件指令,其作用是用来监测用户是否按下了4个方向键,如果没有按键,则什么都不用做,如果按下方向键了,则接着判断按键是否正确;
2). 由于箭头角色的上、下、左、右四个造型的编号依次为1、2、3、4,因此这里是通过按键和角色的造型编号是否相等来判断按键的对错;
3). 这里有4种不同的情况,为了避免玩家同时按下多个键,使用了条件嵌套的编程技巧;
4). 对于正确与错误的处理,这里使用了自制积木,其目的是简化代码。
接下来就需要完成自制积木的定义,代码如下:
这里使用了两个变量“反应时间”和“得分”,需要做初始化处理。对于反应时间,我们可以通过Scratch提供的“计时器”指令来实现,但是必须要对计时器进行清零操作,什么时候清零呢?当然是在箭头切换造型之后,在绿旗代码中增加如下指令:
还有一点需要注意,这里对反应时间做了一个简单的处理,默认情况下,计时器的值都是保留3位小数的,而题目要求反应时间保留两位小数(没有文字说明,但是图中显示的是小数点后面保留两位)。
处理方式也比较简单,就是将计时器 * 100,然后去掉小数部分,再除以100就可以了。比如计时器的数字是0.678,乘以100之后则变成67.8,经过四舍五入之后变成68,再除以100,结果就是0.68了。
4. 计分系统
除了显示本局的得分外,还需要记录最高分以及积分榜,最高得分直接使用变量即可,而积分榜则需要通过列表来实现。
我们是通过点击绿旗来开启下一轮游戏的,因此,这里的最高分和积分榜不需要做初始化处理,不能将最高分设为0或者将列表清空,否则每次记录的就只有当前这一局的分数了。
当倒计时变为0时,一局游戏结束了,此时需要完成两个任务,一是将本局的得分添加到列表中,二是判断本局得分是否大于最高分,如果大于则更新最高分,在绿旗代码块中,添加代码如下:
至此,整个作品就创作完成了,你可以来两局游戏放松一下了^_^。
本题难度系数为5,积木块数量在70个左右,涉及到的知识点主要包括:
变量的使用,尤其要注意变量的初始化问题;
外观编程,包括随机造型和随机颜色;
计时器的使用,掌握计时器的特点;
条件指令的多层嵌套;
逻辑与和逻辑或的运算规则及使用;
函数的编程思想,掌握自制积木的使用。
本作品还是有一定难度的,综合性比较强,对于复杂问题,我们的解决方案就是分析问题,将大问题拆分成几个小问题,然后逐个解决小问题,这就是所谓的计算思维。
如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。