跳舞机游戏-第13届蓝桥杯Scratch选拔赛真题精选

[导读]:蓝桥杯选拔赛每一届都要举行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个左右,涉及到的知识点主要包括:

  • 变量的使用,尤其要注意变量的初始化问题;
  • 外观编程,包括随机造型和随机颜色;
  • 计时器的使用,掌握计时器的特点;
  • 条件指令的多层嵌套;
  • 逻辑与和逻辑或的运算规则及使用;
  • 函数的编程思想,掌握自制积木的使用。

本作品还是有一定难度的,综合性比较强,对于复杂问题,我们的解决方案就是分析问题,将大问题拆分成几个小问题,然后逐个解决小问题,这就是所谓的计算思维。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

潜艇游戏-第13届蓝桥杯Scratch选拔赛真题精选

2023-7-16 8:54:06

综合资讯

自动驾驶-第10届蓝桥杯Scratch省赛真题第5题

2023-7-18 8:45:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索