星际巡航-第16届蓝桥第6次STEMA测评Scratch真题第4题
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥真题,这是Scratch蓝桥真题解析第233讲。
第16届蓝桥第6次STEMA测评已于2025年4月13日落下帷幕,编程题一共有5题(初级组只有前4道编程题),分别如下:
-
飞翔的小燕子
-
立夏
-
听话的小猫
-
星际巡航
-
消失的气球
星际巡航,本题是2025年4月13日举行的蓝桥STEMA测评Scratch编程初/中级组编程第4题。题目要求编程创作星际巡航作品,运行程序,飞碟从左下角移动到红色星球,同时绘制出白线,1秒后飞到黄色星球,并绘制出黄线;然后沿原路返回,同时擦除相应的黄线和白线。
先来看看题目的要求吧。
一.题目说明
编程实现:
星际巡航。
具体要求:
1). 点击绿旗,飞碟的出发点在舞台的左下角,如图所示;
2). 1秒后,飞碟移动到红色的星球上(能看到移动过程),并在移动的过程中绘制出白线,如图所示;
3). 1 秒后,飞碟移动到黄色的星球上(能看到移动过程),并在移动的过程中绘制出黄线,如图所示;
4). 1 秒后,飞碟沿黄色白线返回红色星球,返回的过程中逐渐擦除黄线;
5). 1 秒后,飞碟从红色星球沿白色线返回出发点,返回的过程中逐渐擦除白线;
6). 飞碟回到出发点后,显示逐渐变大的“巡航结束”(能看到变大的过程)。
二.思路分析
本题包含4个角色,分别是飞碟、红色星球、黄色星球和结束,如图所示:
本题考查的知识点包括运动编程、Scratch画笔和事件广播机制。
根据题目的描述,我们可以将飞碟的巡航过程分为两个阶段:
1). 前进阶段
2). 返航阶段
前进阶段比较简单,先从左下角移到红色星球,然后再移到黄色星球。对于这种终点确定的运动,使用滑行指令是最佳选择。
在滑行之前,设置好画笔的粗细和颜色并落笔,就可以按照题目要求绘制出白线和黄线了。
返航阶段是本题的难点,怎么才能依次擦除黄线和白线呢?
在Scratch编程中,擦除图形的一部分(注意不是全部擦除)通常有如下两种方案:
-
绘制和背景颜色一致的新图形,将原图形覆盖掉;
-
先擦除所有图形,再重新绘制新的图形;
对于方案1,只有当舞台背景是纯色时才能获得最佳效果,本作品中的舞台背景并不是纯色,所以不能使用这种方式。
因此我们选择第2种方案,即先擦除所有图形,再重新绘制新的图形,而且这个过程是循环进行的。
由于飞碟本身在移动,不适合充当画笔角色,所以我们需要添加新的角色作为画笔,并且最好是两支画笔,一支用于擦除黄线,一支用于擦除白线。
思路有了,接下来,我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析,我们分4步来编写程序:
-
飞碟前进
-
擦除黄线
-
擦除白线
-
结束效果
1. 飞碟前进
切换到飞碟角色,在绿旗指令下编写代码如下:
代码不算少,说明5点:
1). 飞碟的初始化设置包括坐标和移到最前面,设置角色的层次关系是确保飞碟和星球重合时位于上面,和题目效果图一致;
2). 7~9这3行代码用于绘制白线,11~12这两行代码用于绘制黄线;
3). 落笔和抬笔只需要各使用一次,在绘制白线之前落笔,黄线画完后抬笔;
4). 题目对飞碟移动的速度没有要求,所以滑行的时间可以自由设定,尽量不要太快也不要太慢;
5). 等待1秒指令不要漏了。
对应的,红色星球要设置位置,切换到红色星球角色,编写代码如下:
同理,切换到黄色星球,编写代码如下:
2. 擦除黄线
飞碟返航又分为两步,第1步是从黄色星球返回到红色星球,也就是擦除黄线阶段,第2步是从红色星球返回到左下角起点位置,即擦除白线阶段。
在第1步中,需要循环绘制黄线和白线,在第2步中,则只需要循环绘制白线即可。
先添加两个画笔角色,如图所示:
其中画笔1用于擦除黄线阶段,画笔2用于擦除白线阶段。
在飞碟角色中的绿旗代码块中(前面已经有13行了,此处从第14行开始)继续编写代码如下:
代码不多,强调4点:
1). 第16行代码的作用是让飞碟返回到红色星球,在滑行之前发送“擦除黄线”的广播消息;
2). 第19行代码的作用是让飞碟从红色星球返回到左下角起点位置,在滑行之前发送“擦除白线”的广播消息;
3). 飞碟返回到左下角的起点后,发送“结束”的广播消息;
4). “等待1秒”指令不要漏了。
擦除黄线时,黄线和白线都需要重新绘制,先切换到画笔1角色,编写代码如下:
再切换到画笔2角色,编写代码如下:
代码不少,说明两点:
1). 画笔1负责绘制白线,画笔2负责绘制黄线,都需要重复执行;
2). “擦除全部”指令只能使用一次,并且尽量要放到画笔1角色中,不然就有可能达不到效果。
3. 擦除白线
当飞碟从红色星球返回起点时,要不断的擦除白线,在飞碟角色滑行之前已经发送了”擦除白线“的广播消息。
切换到画笔1角色,编写新的代码块,如下所示:
代码不多,强调一个细节,之前绘制白线的代码仍然在执行,因此我们在接收到广播消息后,先停止其他的代码块。
同理,黄线的绘制也要停下来,切换到画笔2角色中,编写代码如下:
虽然这两处的停止指令不加也不影响效果,但建议尽量加上,这是一个好的编程习惯。
4. 结束效果
切换到结束角色,编写代码如下:
代码比较简单,说明4点:
1). 初始化设置不可少,包括位置、大小和隐藏;
2). 要设置好层次关系,确保结束效果出现在最上层;
3). 大小增加的速度,可以自行调整,不要太快也不要太慢;
4). 最后的”停止全部“脚本指令不要漏了,否则画笔角色还会继续执行代码呢。
至此,整个作品就创作好了。
四.总结与思考
本题是初/中级组编程部分第4题,分数为70分,积木块数量65个左右,涉及到的知识点主要包括:
-
运动编程;
-
Scratch画笔;
-
事件广播机制;
-
停止脚本的使用;
这是本次stema测评的第4题,是初级组的最后一题,难度较大,完成时间大概30分钟左右。
完成本作品有如下4个关键点:
1). 将飞碟的运动分为前进和返航两个阶段,并使用滑行指令来实现飞碟的移动,前进过程中直接使用飞碟角色来绘制白线和黄线;
2). 返航过程中,借助两个画笔角色来绘制黄线和白线,通过不断的擦除全部和重新绘制,模拟出逐渐擦除的效果;
3). 使用广播机制来实现角色之间的通信,从而控制各个角色执行代码的顺序;
4). 要合理的停止脚本的执行,什么时候要停止代码的执行,要停止哪些脚本,还是有讲究的,尽量养成好的编程习惯。
这一次的画笔题目和前5次stema测评有所不同,之前都是围绕着旋转和运动来进行的,相信大家都已经熟悉和掌握了。
虽然题型有所不同,但是其核心知识和原理基本上差不多,万变不离其宗。对于本题而言,涉及的核心知识就是运动编程和先擦再画模型。
所以说,我们一定要抓住核心知识点,掌握各种常见的模型,以不变应万变,从容应对各种场景和需求。
超平老师给你留两道思考题:
1). 在本作品中,为什么没有使用自制积木及其不刷新特性呢?
2). 本题还有一种巧妙的思路,就是使用列表来实现,你知道嗯么做吗?
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄