[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第110讲。
蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多文化教育研究中心合作推出的考试项目。STEM能力测试致力于综合评价学生的 STEM 水平,对学生的科技素养、逻辑思维和编程能力等三方面进行客观科学的测试。
找一找马里奥,本题是2023年3月12日举行的第14届蓝桥杯STEMA考试Scratch图形化编程真题初/中级组编程部分第3题。题目要求编程实现找一找马里奥游戏,在黑暗模式下移动鼠标找到在舞台上移动的马里奥。
先来看看题目的要求吧。
一.题目说明
编程实现:
找一找。
具体要求:
1). 点击绿旗,角色、背景如图所示;
2). 马里奥在舞台中心向随机方向持续移动,当碰到舞台边缘时反弹(旋转方式为左右翻转);
3). 按下空格键,舞台灯光关闭进入黑暗模式并出现追光灯的圆形照射区域,追光灯的圆形照射区域持续跟随鼠标移动(黑暗模式和追光灯的圆形照射区域,请自行创建且追光灯的圆形照射区域大小如下图所示);
4). 当追光灯的圆形照射区域中出现移动的马里奥,用鼠标点击马里奥,马里奥立刻停止移动,此时开启舞台灯光,左下角的数字变为1,程序结束。
评判标准:
-
3分:满足"具体要求"中的1);
-
3分:满足"具体要求"中的2);
-
9分:满足"具体要求"中的3);
-
5分:满足"具体要求"中的4)。
二.思路分析
本题提供了两个角色,分别是马里奥和数字,如图所示:
根据题目描述,还需要自行绘制一个追光灯角色,追光灯是一个黑色的矩形,大小要能够完全覆盖舞台区域,同时要漏出一个圆形透明区域。
因此,本作品一共有3个角色,各角色的功能如下:
-
马里奥在舞台上随机移动
-
追光灯随鼠标移动
-
数字开始为0,找到马里奥后变成1
默认情况下,舞台呈现灯光模式,当按下空格键后进入黑暗模式,所谓的黑暗模式就是将追光灯角色显示出来。
本作品的难点在于追光灯角色的绘制,需要结合圆形工具和橡皮擦功能,绘制过程大致可以分为以下5步:
第1步,选择绘制角色,进入造型绘制界面,如图所示:
第2步,先绘制一个黑色的矩形,如图所示:
注意,矩形不需要太大,等擦除一个透明区域后再放大。
第3步,使用橡皮擦进行擦除,漏出一个圆形透明区域,如图:
注意,橡皮擦最大只能设置为100,这就是为什么先绘制一个小矩形的原因。
第4步,将图形转换为位图模式,再转换为矢量图模式。
第5步,放大黑色矩形区域,覆盖整个造型区域,如图:
将角色设置为200或者更大的数值即可,但实际上由于角色太大,往往无法设置更大的值。
需要说明的是,不同的Scratch版本绘制的效果略有不同,为了得到更高的效果,建议做两次转换,也就是上面的第4步,先转成矢量图,再转成位图,然后放大。
接下来,我们就进入具体的编程实现环节。
三.编程实现
根据题目描述和思路分析,我们可以分角色来编写程序:
1. 马里奥角色
点击绿旗时,马里奥角色位于舞台中心,然后面向随机方向开始移动,当碰到舞台边缘时反弹,在黑暗模式下,如果点击马里奥,则停止运动,在马里奥角色中编写代码如下:
说明两点:
1). 随机方向的标准范围是-180到180,写成0到360也是可以的,因为Scratch会进行自动转换;
2). 当马里奥停止移动后,发送了一个”找到啦“的广播消息。
2. 追光灯角色
默认情况下,追光灯处于隐藏状态,当按下空格键后显示,并跟随鼠标移动,当找到马里奥后隐藏起来,对应的代码如图所示:
这里有一个细节需要注意,在正式考试时,是有视频文件的,考生可以通过播放视频预览作品效果。
其中追光灯在出现的时候,是逐渐显示的,这可以通过虚像特效来实现,虚像特效是指角色的透明度,虚像为0时,角色正常显示,当虚像为100则完全透明,我们也就看不见了。
3. 数字角色
数字角色非常简单,开始显示0,找打马里奥后显示1,对应的代码如下:
至此,我们的找一找马里奥小游戏就创作好了。
四.总结与思考
本题是初/中级组编程部分第3题,分数为20分,积木块数量30个左右 ,涉及到的知识点主要包括:
-
运动编程,包括旋转模式、方向设置和反弹运动;
-
外观编程,包括显示、隐藏、切换造型和虚像特效;
-
循环编程,包括重复10次、无限重复和重复执行直到三种不同的循环;
-
随机数指令;
-
事件广播机制;
-
角色点击和按下空格的检测。
如果仅从代码层面来看,本题属于简单题目,由于需要考生自行绘制角色,无形之中增加了题目的难度,一部分考生由于不熟悉Scratch角色绘制工具和技巧,导致没能做出追光灯效果。
这就是STEM测评的考试特点,在考察知识点的同时,还考察了孩子的自主探索能力,如果孩子平时喜欢摸索,在编程创作时自己绘制各种角色,这道题就非常简单了。
不知道你发现了没,针对上面的程序,如果没有打开追光灯,直接点击马里奥,数字也会从0变为1,同时结束程序。由于题目并没有严格要求必须先打开追光灯,所以这么写是可以的,如果要保证在开启追光灯之后才能点击马里奥,该怎么做呢,这就算是留给你的思考题吧。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄。
需要素材和源码的,可以移步至“超平的编程课”gzh,或者联系本人。