[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第48讲。
第12届蓝桥杯青少年组省赛分两次进行,这是2020年10月19日举行的第一次省赛考试中级组,形式为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
王子回家,本题是第12届蓝桥杯Scratch第一次省赛真题中级组编程第3题。题目要求考生编程实现王子回家效果,王子被女巫的魔法送到了超时空,他需要找到两把钥匙才能回到自己的世界。
先来看看题目的要求吧。
一.题目说明
编程实现:
王子被女巫的魔法送到了超时空,他需要找到两把钥匙才能回到自己的世界。
具体要求:
1). 点击绿旗,出现对应的角色与背景;
![图片[1]-scratch王子回家_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-73.png)
2). 王子跟随鼠标指针移动;
3). 两把钥匙可以在舞台内随机移动(要求看到移动过程);
4). 当王子碰到钥匙后,点击鼠标可以获取钥匙,钥匙从舞台中消失;
5). 当王子拿到两把钥匙后,王子回到他的世界。
![图片[2]-scratch王子回家_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-74.png)
评判标准:
- 7 分 :满足要求 1);
- 15 分 :满足要求 2);
- 15 分 :满足要求 3);
- 15 分 :满足要求 4);
- 8 分 :满足要求 5)。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本作品一共有3个角色,分别是王子和两把钥匙,如图所示:
![图片[3]-scratch王子回家_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-75-893x1024.png)
其中,王子角色一直跟随鼠标移动,实现也比较简单,让角色重复移到鼠标指针位置即可,当王子拿到两把钥匙后,切换背景,停止脚本。
两把钥匙的功能和效果基本一样,都是在舞台范围内随机移动,在移动过程中,如果碰到王子,则停止移动,此时按下鼠标,钥匙就消失了。
为了记录王子拿到钥匙的数量,我们需要创建一个变量,绿旗点击时,将变量设置为2,每拿到一把钥匙,将钥匙数量减1,如果数量减到0了,则表示两把钥匙都拿到了。
四.编程实现
根据题目描述及思路分析,我们可以按角色逐个编写程序:
- 钥匙角色
- 王子角色
1). 钥匙角色
当绿旗点击时,先设置好钥匙的初始位置,然后就在舞台上随机移动,由于要看到移动的过程,所以不能简单的使用“移到随机位置”指令,我们可以考虑使用“在1秒内移到随机位置”。
如果想让每次移动的速度有快有慢,可以将这里的时间设置为随机数,代码如图所示:
![图片[4]-scratch王子回家_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-76.png)
接下来,就需要检测是否碰到王子角色了,通常的实现方式是使用”重复执行“ + ”如果…那么“指令的组合。考虑到在本作品中,不需要反复判断是否碰到王子角色,可以使用”等待条件“指令,让代码变得更为简洁。
当钥匙碰到王子角色,立刻停止移动,然后再判断是否按下鼠标,如果玩家按下鼠标,就将钥匙隐藏起来,同时将变量”钥匙“减1,以红色钥匙为例,编写代码如下:
![图片[5]-scratch王子回家_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-77.png)
这里强调两点:
①. 由于”在1秒内滑行到随机位置“指令是独占模式,换句话说,角色一旦执行这个指令,必须要等待该指令执行完毕,才能继续执行后续指令,所以,我们需要单独的再编写一个绿旗代码块来判断是否碰到王子角色,在一个角色中,可以有多个绿旗指令代码块,它们是并行执行的。
②. 当碰到王子角色时,要停止角色的移动,可以使用”停止该角色的其它脚本“指令。
除了初始位置不同,黄色钥匙角色和红色钥匙的代码完全一样,这里就不再列出了。
2). 王子角色
当绿旗点击时,默认背景是背景1,王子位于舞台中间位置,然后跟随鼠标移动,这部分的代码如图所示:
![图片[6]-scratch王子回家_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-78.png)
注意,同时,我们还需要将变量”钥匙“的初始值设置为2,并判断变量是否为0,如果为0,则背景切换到城堡背景,并将角色移到舞台中间,然后停止程序,相应的代码如下所示:
![图片[7]-scratch王子回家_第12届蓝桥杯scratch省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-79.png)
这里再次使用了”等待条件“指令,是因为钥匙变量是否等于0的条件只需要判断一次,凡是只需要判断一次的条件,都可以使用“等待条件”指令,简洁而高效。
五.总结与思考
本题难度一般,积木块数量在40左右,分值为60,涉及到的知识点主要包括:
- 角色的移动,重点要注意滑行指令的独占模式特性;
- 并行执行的编程思想及具体实现;
- 变量的使用;
- 在角色中切换舞台背景;
- 条件判断,重点是“等待条件”指令的妙用;
- 如何停止指定脚本。
题目不难,重点是对独占模式的理解,在Scratch中,有不少指令都是独占模式,比如“等待1秒”,“播放声音等待播完”,“说你好2秒”,“在1秒内滑行到x,y”等。它们的最大特点就是在一旦执行该指令,就必须等指令执行完毕,才能执行后续指令。
有时,我们需要同时执行其它指令,此时就需要用到并行模式,常见的解决方案是再使用一个全新的代码块,可以通过事件指令,比如“当绿旗被点击”,也可以使用事件广播机制,对于克隆体则可以使用多个“当作为克隆体启动时”,这些常见的编程技巧,你都学会了吗?
需要素材和源代码的,可以转到这里,王子回家-2020.12.20蓝桥杯省赛中级组第3题。
暂无评论内容