[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第11讲。
第11届蓝桥杯青少年组国赛原定于2020年4月25日举行,因疫情推迟到2020年10月31日,并且改为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
女巫与青蛙王子,本题是第11届蓝桥杯Scratch国赛真题编程第3题,中级组和初级组都有此题。题目要求考生编程实现女巫向青蛙王子发射扫把,玩家通过按键控制青蛙王子进行躲避的游戏效果,本题难度系数为3。
题目说明
背景信息:
我们熟悉的青蛙王子又回来了,这次王子中了女巫的新法术,变成青蛙后被困在神秘空间,我们控制青蛙躲避女巫的扫把解除魔法。
编程实现:
女巫向青蛙王子发射扫把,通过按键控制青蛙王子进行躲避。
具体要求:
1). 点击绿旗,出现角色、背景;
![图片[1]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-102.png)
2). 女巫在舞台左侧随机位置上下移动,每移到一个随机位置都在该位置发射一把扫把(发射数量:5把);
![图片[2]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-103.png)
3). 青蛙自动下落,按动空格键青蛙向上移动;
4). 当青蛙王子躲过所有扫把,法术解除女巫消失,青蛙变回王子后回到自己的城堡,程序结束;
![图片[3]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-104.png)
![图片[4]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-105.png)
5). 如果扫把打到王子,程序结束。
效果预览
在编程之前,先来看看作品的完整效果吧:
思路分析
本题一共有3个角色,分别是女巫、青蛙王子和扫把,如图所示:
![图片[5]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-106-897x1024.png)
每个角色的功能也不多,不过,它们都有一个共同点,那就是运动,其中女巫在左侧随机位置上下移动,青蛙王子在右侧上下移动,扫把是自左向右移动。
编程实现
根据题目描述以及上面的思路分析,我们可以分角色来编写:
- 女巫角色
- 扫把角色
- 青蛙王子角色
- 舞台背景
1.女巫角色
在点击绿旗后,女巫在舞台左侧随机位置上下移动,每移到一个随机位置都要发射一把扫把,和运动相关的指令有如下3种:
- “面向90方向” 指令+ “移动10步”指令
- 改变坐标指令,如“将x坐标增加10”指令和“将y坐标增加10”指令
- “在1秒内滑行到xx”指令
首先,我们要排除第一种方式,因为它会改变角色的方向,总不能让女巫平躺着上下移动吧^_^。第二种方式则需要结合循环才可以看到移动的过程,很显然,第三种方式最为简单,应该作为我们的首选。
每移到一个随机位置都需要发射一把扫把,很多同学可能会使用使用事件广播机制,给扫把角色发送一个广播,然后在扫把角色中克隆扫把,注意到底行不行呢?
你需要明白的是,克隆体也会接收广播消息,这样会导致扫把克隆体也会克隆扫把,从而出现了多余的扫把。
更好的方法是直接在女巫角色中克隆扫把角色,在Scratch中,我们不仅可以在当前角色克隆自己,还可以在一个角色中克隆另一个角色,切换到女巫角色,编写代码如下:
![图片[6]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-107.png)
2. 扫把角色
针对应扫把角色而言,一旦生成了扫把克隆体,就从女巫所在位置向右运动直到碰到舞台边缘消失。在移动的过程中,还需要判断是否碰到了青蛙王子,如果碰到则停止全部脚本。
由于题目要求在躲过所有的扫把后,青蛙会变成王子,所以我们需要记录一下躲过的扫把数量,不妨创建一个变量,将其初始化为0,每躲过一把扫把就加1,扫把角色的代码如下:
![图片[7]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-108-440x1024.png)
需要说明的是,一旦扫把到达舞台右边缘,说明它没有碰到青蛙王子,所以此时将数量加1。
3. 青蛙王子角色
青蛙王子角色有两大功能,一是上下移动,二是躲过所有扫把后回到自己的城堡。
我们先来实现上下移动功能,游戏开始时,显示的是青蛙造型,并且是自动下落的,当按下空格键时才上升,这部分的代码如下:
![图片[8]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-109.png)
当青蛙王子躲过所有的扫把,就可以从青蛙变回王子,回到自己的城堡,针对这个功能,我们可以另起一个代码段,由于这里只需要判断一次,因此可以使用“等待条件”指令,当躲过扫把数等于5时,就可以切换造型了,并停止运动,同时发送一个“成功”的广播消息给其它角色,代码如下:
![图片[9]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-110.png)
需要说明的是,在绿旗下面有一个“等待0.1秒”指令, 其作用是确保在再次点击绿旗的时候,先执行其它绿旗指令下的代码,这样变量“躲过扫把数”就变成0了,否则如果先执行这段代码,变量的值还是5,直接就广播成功了。
4. 舞台背景
舞台背景相对比较简单,绿旗点击的时候太空背景,当青蛙王子胜利的时候,切换到城堡背景,代码非常简单,如下:
![图片[10]-scratch女巫与青蛙王子_第11届蓝桥杯scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-111.png)
对应的,女巫角色在接收到”成功“广播后,也需要隐藏,这里就不再贴出代码了。
总结与思考
本题相对较为简单,代码量大概在52个积木块左右,涉及到的知识点包括:
- 运动编程,包括”1秒内滑行到x、y“和”将x/y增加10“两个指令;
- Scratch克隆,尤其是在一个角色中克隆另一个角色的技巧;
- 事件广播机制;
- 造型切换和背景切换;
- 变量的使用;
- 等待条件指令的妙用。
在上面的代码中,我们将背景切换的代码写在了舞台背景中,有些同学觉得有些疑惑,直接写在青蛙角色中不就行了嘛。
其实在这涉及到一个重要的编程思想,这就是单一职责,它指的是一个角色或者一个代码块只负责一个功能,日常生活中,我们说的各司其职就是这个意思。很明显,背景是属于舞台的,放在舞台中来写是最合适不过了。
需要素材和源代码的,可以转到这里,女巫与青蛙王子-2020.10.31蓝桥国赛第3题。
暂无评论内容