[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥真题,这是Scratch蓝桥真题解析第214讲。
第16届蓝桥第3次STEMA测评已于2024年12月22日落下帷幕,编程题一共有5题(初级组只有前4道编程题),分别如下:
逃出城堡,本题是2024年12月22日举行的蓝桥STEMA测评Scratch编程初/中级组编程第3题。题目要求编程逃出城堡游戏,小孩被困在城堡中,需要你用鼠标指引她离开城堡,移动过程中避开怪物,并到达城堡大门处,输入解锁密码 123456 后方可离开。
先来看看题目的要求吧。
一.题目说明
编程实现:
逃出城堡。
小孩被困在城堡中,需要你用鼠标指引她离开城堡,移动过程中避开怪物,并到达城堡大门处,输入解锁密码 123456 后方可离开。
具体要求:
1). 点击绿旗,小孩在舞台左上角(初始位置),怪物在 S1 处,城堡大门在舞台右下角,如图所示;
2). 1 秒后,小孩持续面向鼠标指针所在方向移动,如图所示;
3). 怪物在 S1 和 S2 两处之间持续做往返运动;
4)当小孩碰到红色墙壁后会瞬间回到初始位置;
5)当小孩碰到怪物后逃出失败,程序结束(怪物和小孩均不能再移动);
6)当小孩碰到城堡大门后,怪物和小孩不再移动,城堡大门说“请输入解锁密码”,同时舞台下方显示输入框,如图所示;
7). 如果输入的是 123456,解锁成功,小孩消失,程序结束,否则继续显示输入框。
二.思路分析
本题包含3个角色,分别是小孩,怪物和城堡大门,如图所示:
本题考查的知识点包括运动编程、事件广播机制、问答指令、循环和条件侦测等。
我们可以分角色进行分析和讨论。
1. 怪物角色
在这3个角色中,怪物最为简单,它只需要在S1和S2两处之间来回运动,可以直接使用滑行指令来实现。
2.小孩角色
小孩则是面向鼠标指针进行移动的,这需要使用“面向鼠标指针”指令,如下:
我们可以将鼠标指针看作是一个特殊的角色,鼠标移动哪儿,角色面向的方向就会发生变化。
小孩在运动过程中,如果碰到红色的墙壁则会瞬间回到起点,这需要使用侦测指令中的“碰到颜色”指令,如下:
注意,在设置颜色时,要使用底部的拾取颜色工具。
如果碰到怪物角色,则直接停止全部脚本。
至于碰到城堡角色,我们可以放到城堡角色中来判断处理。
3.城堡角色
城堡角色在碰到小孩后,会询问解锁密码,低于只需满足一次条件的判断场景,建议使用等待条件指令,如下:
这种写法可以极大地的简化代码。
与此同时,需要让小孩和怪物立刻停止运动,这就需要使用事件广播机制了。
至于询问部分,则可以使用“重复执行直到”指令来实现,只要输入密码不对,就重复询问,当输入正确密码后,发生广播消息给小孩角色,将小孩隐藏起来。
思路有了,接下来,我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析,我们分3步编写程序:
-
小孩的移动
-
怪物来回运动
-
城堡侦测及问答
1. 小孩的移动
在小孩角色中编写代码如下:
代码不少,说明4点:
1). 初始化设置包括3个方面,分别是显示、位置和方向,尤其要注意显示,因为小孩在解锁成功后会隐藏,那么在点击绿旗时必须要将其显示出来;
2). 由于鼠标的位置随时在变化,因此“面向鼠标指针”指令必须放在“重复执行”中,确保时刻都能面向鼠标移动;
3). 移动的步数,可以自行确定,不要太快,也不要太慢;
4). 小孩碰到怪物,程序结束,直接停止全部脚本即可;
2. 怪物来回运动
切换到怪物角色,编写代码如下:
代码比较简单,说明两点:
1). 要加上“等待1秒”指令,1秒后才开始滑行,保持和小孩的节奏一致;
2). 滑行的时间可以自行设定,但不要太快,也不要太慢;
3. 城堡侦测及问答
切换到城堡角色,编写代码如下:
代码不多,说明两点:
1). 一旦碰到小孩,先发送一个“停止”的广播消息,一旦密码输入正确,就发送一个“成功”的广播消息;
2). “回答”指令用于获取玩家输入的内容,每次点击绿旗时,都会变成空白,不用担心直接和上一次输入的正确密码进行相等比较;
对应的,在小孩角色中添加代码如下:
在怪物角色中,也需要添加如下代码块:
这样,就可以确保在小孩碰到城堡大门时,小孩和怪物立刻停止运动;当输入正确的密码后,小孩消失。
需要注意的是,这里使用了“停止该角色的其他脚本”,而不是“停止全部脚本”指令,因为城堡角色的代码还需要继续执行。该停止的必须要停止,不能停止的坚决不停止,不能伤及无辜呀。
至此,整个作品就创作好了。
四.总结与思考
本题是初/中级组编程部分第3题,分数为70分,积木块数量36个左右,涉及到的知识点主要包括:
-
运动编程;
-
事件广播机制;
-
条件侦测;
-
循环指令;
这是本次stema测评的第3题,难度一般,创作时间约15分钟左右。重点有两个,一是运动编程的不同实现方式,二是关于侦测条件的灵活使用,在哪个角色中判断,使用什么样的方式。
对于某个功能和效果,通常会有多种实现方式,我们一定要根据实际场景来灵活处理,基本原则是让代码更简洁,也就是使用更少的代码实现同样的功能,正所谓Write less,do more !
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄