[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第62讲。
第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
击鼓游戏,本题是第10届蓝桥杯Scratch省赛真题编程第7题,是中级组最后一题,初级组没有此题,题目要求考生使用编程创作击鼓游戏。
先来看看题目的要求吧。
一.题目说明
准备工作:
将舞台背景设置为“spotlight-stage”,添加一个“Bellerina”角色、两个“Drum1”角色和两个“Drum2”角色,并按照图 7-1 的位置摆放。角色“Bellerina”的造型和颜色的设置须如图 7-1 所示,五个造型的裙子颜色顺序为:白、红、蓝、绿、黄;四个鼓的颜色分别设置为:红、蓝、绿、黄。
![图片[1]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-198.png)
编程实现:
舞台中央的小女孩会随机变换造型及衣服颜色4次,游戏玩家要记住衣服颜色出现顺序,并按顺序敲击相应颜色的鼓,颜色顺序正确则可得1分,并开始下一轮变换颜色;直到某一轮敲鼓顺序错误则游戏结束,更新最高得分。
![图片[2]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-199-1024x461.png)
![图片[3]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-200-1024x461.png)
![图片[4]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-201-1024x459.png)
![图片[5]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-202-1024x448.png)
具体要求:
1、每次点击绿旗后,舞台左上角的“得分”(显示位置见图-2)都为 0;
2、小女孩为造型 1(白色裙子);并说“请观察颜色序列!”2 秒钟(图-2);
3、小女孩切换 4 次造型,每次都是随机切换为造型 2 到造型 5 中的一个(这 4 次切换的造型之间允许重复);而且第一次切换后要说“1”1 秒钟,第二次说“2”1 秒钟,第三次说“3”1 秒钟,第四次说“4”1 秒钟(图-3 至图-6);
4、在 4 次造型切换完成后,小女孩切换回造型 1(白色裙子),表示一轮切换结束。小女孩说:“请按顺序点击相应颜色鼓!”(图-7);
5、游戏玩家根据刚刚小女孩 4 次切换造型中衣服颜色的顺序,依次点击(敲击)相应颜色的鼓,在敲击的第一次鼓后小女孩说“1”,第二次后说“2”,第三次后说“3”,第四次后说“4”;如果玩家敲击的顺序与衣服颜色切换的顺序相一致,小女孩就说“正确!”2 秒钟,且得分加 1(图-8),并从步骤 2 开始下一轮游戏;如果敲击的顺序错误,小女孩就说:“游戏结束”,并根据当前得分的情况更新舞台右上角的最高得分(显示位置如图-9 所示),程序结束。
将程序保存到桌面,命名为“7.sb2”。
评判标准:
- 10 分:背景、角色和造型的设置符合准备工作中的要求,鼓和小女孩衣服的颜色与题目中图示接近即可得分,只要改变鼓面颜色即视为改变了鼓的颜色。
- 20 分:在 10 分基础上,能正确地开始游戏,并且每轮小女孩的造型和衣服颜色都是随机的序列,需要多次点击绿旗来验证随机性。
- 30 分:在 20 分基础上,颜色变化结束,切换为白色裙子和造型 1。
- 60 分:在 30 分基础上,能实现小女孩说出在本轮中敲击鼓的次数,并实现在点击鼓顺序正确时,得分加 1。
- 70 分:在 60 分基础上,能实现点击鼓的顺序正确时,正确地循环进行下一轮游戏。
- 80 分:在 70 分基础上,当点击鼓顺序错误,小女孩说“游戏结束”。
- 100 分:在 80 分基础上,在游戏结束前,可以更新最高得分并结束游戏。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本作品是基于Scratch2的,角色都来自于Scratch自带的角色库,不过需要对女孩造型和鼓进行颜色处理,角色列表如图所示:
![图片[6]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-203-901x1024.png)
其中女孩有5个造型,如图所示:
![图片[7]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-204-778x1024.png)
不知道你注意到了没,除了默认的白色造型之外,接下来的红、蓝、绿、黄4个造型,和鼓的排列一致。
本题的难点在于如何判断女孩切换造型的顺序和击鼓顺序是否相同。首先,我们需要使用两个列表分别保存造型顺序和击鼓顺序,然后直接比较两个列表是否相等即可。
四.编程实现
根据题目描述,我们可以分3步来编写程序:
- 女孩随机切换造型
- 击鼓并记录顺序
- 判断游戏是否成功
1. 女孩随机切换造型
首先创建两个列表,命名为“颜色顺序”和“敲鼓顺序”,再创建一个变量“次数”,用来表示女孩切换造型的次数,后面还可以用来表示击鼓的次数,游戏开始时,将列表清空,并将次数设置为1。
接下来,将女孩切换为白色造型,说“请观察颜色序列”,然后重复4次随机切换造型,并将每次造型的名称保存到列表中,每切换一次造型,女孩都说出当前的次数。
造型切换完毕,女孩又切回到白色造型,并说“请按顺序点击相应颜色鼓!”,同时将次数清零。对应的代码如下所示:
![图片[8]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-205-530x1024.png)
需要注意的是,女孩一共有5个造型,但我们只需要在红蓝绿黄四种颜色之间切换,所以这里使用了“在2和5之间取随机数”指令。保存到列表中的是女孩造型的名称,也就是红、蓝、绿、黄。
2. 击鼓并记录顺序
接下来玩家要开始击鼓了,击鼓的时候需要完成两件事情,一是将当前鼓的颜色保存到列表“敲鼓顺序”中,二是女孩说出当前击鼓的次数。
4个鼓角色的功能基本一样,这里以最左边的红色鼓为例,编写代码如下:
![图片[9]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-206.png)
需要说明的是,这里再次用到了变量“次数”,这就是为什么要在女孩切换完造型之后将变量清零的原因。
每次敲完鼓之后,女孩都要说出当前敲击的次数,所以这里发送了一个“敲鼓”的广播消息。
其它3个鼓角色的代码基本一样,唯一不同的是向列表中加入的颜色,分别是蓝、绿、黄。
当女孩角色接收到“敲鼓”的广播消息后,说出次数即可,代码如下所示:
![图片[10]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-207.png)
3. 判断游戏是否成功
当玩家击鼓4次之后,就要判断游戏是否成功了,我们可以在女孩说出次数之后进行判断,如果次数=4,说明已经敲完鼓了。
判断的依据前面已经说过了,直接判断两个列表是否相等即可,如果相等,将得分加1,并说正确,然后开始下一轮游戏。如果错误,则根据情况设置最高分,并说错误,然后停止全部脚本,这部分的代码如下所示:
![图片[11]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-208.png)
在上面的代码中, 使用了两个变量,一个是“得分”,一个是“最高得分”,在游戏开始时,需要将得分设置为0,而最高得分则不能设置初始值的。
重新开始游戏,这里做了一个巧妙的处理,就是直接发送了一个“开始”的广播消息,同时将原来绿旗下面的代码一分为二,如图所示:
![图片[12]-scratch击鼓游戏_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-209-422x1024.png)
注意,这里并没有增加新的代码,只是将绿旗代码一分为二,通过广播机制将二者串联起来,这样就可以在游戏成功之后,再次发送“开始”广播,从而实现多轮游戏了,这是一个非常巧妙而又重要的编程技巧,希望你能够好好体会。
至此,整个游戏就创作好了,你可以放松片刻,体验一下游戏效果了。
五.总结与思考
本题难度系数为6,积木块数量在66个左右,涉及到的知识点主要包括:
- 给造型填充颜色;
- 列表的操作,尤其是判断两个列表是否相等;
- 外观编程,包括切换造型、说话、获取造型名称等;
- 条件语句的多层嵌套;
- 事件广播机制。
- 巧妙使用事件广播来实现多轮游戏的编程技巧。
这是省赛中级组的最后一题,还是挺有难度的,尤其要注意列表的比较,Scratch提供了一个简单的方法,允许我们直接比较列表是否相等。
其次是实现多轮游戏的方法,本题巧妙的使用了事件广播来实现,除了这种方法,我们还可以使用自制积木来实现,你知道怎么做吗,赶紧动手尝试一下吧。
需要素材和源代码的,可以转到这里,击鼓游戏-2019.3.24蓝桥杯省赛第7题。
暂无评论内容