小星星-第16届蓝桥第3次STEMA测评Scratch真题第4题
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥真题,这是Scratch蓝桥真题解析第215讲。
第16届蓝桥第3次STEMA测评已于2024年12月22日落下帷幕,编程题一共有5题(初级组只有前4道编程题),分别如下:
-
变小的热气球
-
旅游
-
逃出城堡
-
小星星
-
旋转旋涡
小星星,本题是2024年12月22日举行的蓝桥STEMA测评Scratch编程初/中级组编程第4题。题目要求编程创作小星星作品,舞台中间一颗小星星,4颗星星出现在正方形的4个顶点,4颗星星沿着对角线移到黄色小星星的后面,然后又回到4个顶点,接着按顺时针方向移到下一个顶点,并重复这个过程。
先来看看题目的要求吧。
一.题目说明
编程实现:
小星星。
具体要求:
1). 点击绿旗,黄色星星在白色正方形的中心,如图所示;
2). 1 秒后,4 颗颜色不同的星星出现在正方形的四个顶点上,如图所示;
3). 1秒后,四个顶点上的星星同时沿对角线逐渐移动到黄色星星的后面(能看到移动的过程);
4). 颗星星到达黄色星星的后面之后,黄色星星变大,如图所示;
5). 1 秒后,黄色星星变为初始大小,其他星星沿对角线逐渐返回顶点(能看到移动的过程),如图所示;
6). 1秒后,四个顶点的星星沿着正方形的边按顺时针方向移动到下一个顶点(能看到移动的过程),如图所示;
7). 重复执行“具体要求”3)、4)、5)、6)。
二.思路分析
本题只有1个小星星角色,如图所示:
本题考查的知识点包括运动编程、克隆、变量(包括全局变量和私有变量)、事件广播机制和列表等。
本作品只有1个小星星角色,但要分两种身份来处理,一是本体,二是克隆体。
本体的功能比较简单,主要包括两点:
1). 生成4个克隆体;
2). 大小的变化;
而克隆体则是作品的重点和难点,它的运动分成如下3段:
1). 从顶点到舞台中心;
2). 从舞台中心到顶点;
3). 从一个顶点到下一个顶点;
其中,前两种比较简单,因为顶点和舞台中心的坐标是固定的,很容易确定下来。舞台中心的坐标是(0, 0),4个顶点的坐标分别如下:
所以,我们只需要使用滑行指令让克隆体在顶点和舞台中心之间移动即可。此时,我们需要考虑两个问题:
1). 如何区分克隆体?
2). 4个顶点的坐标存放到哪儿?
对于第1个问题,超平老师提出了一个非常好记的模型-”自私的ID“,就是创建一个私有变量,将其命名为”ID“,表示克隆体的编号。
通常,我们从1开始,依次对克隆体进行编号,本体的编号为0。
对于第2个问题,自然而然的会想到列表,它可以一次性保存多个数据。此处,我们需要两个列表,分别保存x坐标和y坐标,如图所示:
列表的编号从1开始,这和克隆体的ID刚好一致,使用如下指令就可以获取克隆体的x、y坐标:
还有一个难点,怎么让四个顶点的星星沿着正方形的边按顺时针方向移动到下一个顶点呢?
我们可以从列表中的数据入手,4颗星星的坐标如下:
位置 | ID | 起点坐标 | 目标位置 |
右上角 | 1 | (100, 100) | (100, -100) |
右下角 | 2 | (100, -100) | (-100, -100) |
左下角 | 3 | (-100, -100) | (-100, 100) |
左上角 | 4 | (-100, 100) | (100, 100) |
对应的列表变化对比如下:
其中,x、y表示起点位置,x'、y'表示目标位置,怎么让x到x'、y到y’呢?
仔细观察,不难发现,其实就是将x和y列表中的每一项前移一项,列表的第一项则移到最后,非常类似于将角色切换上一个造型。
具体操作非常简单,经典的3步走策略:
1). 将列表的第一项保存到一个变量中;
2). 删除列表的第一项;
3). 将保持到变量的值加入到列表中;
解决了关键难题,思路就比较清晰了,接下来,我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析,我们分4步编写程序:
-
初始化列表数据
-
克隆4颗小星星
-
克隆小星星的运动
-
黄色小星星大小的变化
1. 初始化列表数据
创建两个列表,分别命名为x和y,定义自制积木如下:
代码非常简单,说明两点:
1). 之所以使用自制积木是为了更好的组织代码,也方便讲解;
2). 在加入数据之前,一定要清空列表;
2. 克隆4颗小星星
为了简化代码,我们再定义一个自制积木用于克隆4颗小星星,代码如下:
代码不多,强调4点:
1). ID变量必须是私有变量,创建变量时建议先勾选”仅适用于当前角色“,避免忘了;
2). 要确保ID的值从1开始,这样就可以和列表的编号保持一致;
3). 最后将ID的值设置为0,表示本体的ID是0,这是个好习惯,请尽量加上,关键时刻能救命;
4). 由于在克隆的过程中,本体的颜色发生了变化,为了恢复本体的颜色,需要增加一个”清除图形特效“指令;
有了上面的两个自制积木,我们在绿旗指令下编写代码如下:
代码非常简单,说明两点:
1). 角色的初始化设置包括大小和坐标,必不可少;
2). 在克隆完成后,要将本体小星星移到舞台中心(0,0)位置;
运行程序,效果如下:
3. 克隆小星星的运动
有了克隆体,接下来就可以让他们运动起来了,在小星星角色中继续必须代码如下:
代码不多,说明4点:
1). 刚开始,4颗小星星位于4个顶点,先移到舞台中心(0,0)位置,这是第1个滑行指令;
2). 1秒后,从舞台中心又回到各自的顶点位置,这是第2个滑行指令;
3). 1秒后,在顶点位置顺时针移到下一个顶点位置,这是第3个滑行指令;
4). 在第3个滑行指令之前,需要先更新列表数据,所以这里发生了一个广播消息,为确保更新后才执行移动,尽量使用”广播并等待“指令;
对应的在舞台背景中,编写代码如下:
代码还是比较简单的,完全遵循前面分析的3步走策略。
为什么要放在舞台背景中更新列表呢?
原因在于,小星星角色有4个克隆体,如果直接在小星星角色中编写代码,每个克隆体都会执行一次更新操作,列表会被更新多次,有可能会出现bug。
而放到舞台背景中更新列表,确保只更新一次。
4. 黄色小星星大小的变化
最后就是黄色小星星的大小变化效果了,在绿旗指令中增加代码如下:
代码比较简单,唯一需要注意的是,计算好等待的时间,确保和题目的要求描述一致。
至此,整个作品就创作好了。
四.总结与思考
本题是初/中级组编程部分第4题,分数为70分,积木块数量67个左右,涉及到的知识点主要包括:
-
运动编程;
-
事件广播机制;
-
克隆编程;
-
变量,尤其是私有变量;
-
列表及其运算;
-
外观编程;
这是本次stema测评的第4题,也是初级组最优一题,难度较大,创作时间约30分钟左右。
难点是如何让小星星从一个顶点顺时针移到下一个顶点,表面上看是角色在移动,其本质是列表中的数据发生了变化,只需要找到变化规律,先更新列表,再通过ID和列表就可以找到每颗星星克隆体的正确位置。
这是典型的数据驱动显示的编程思想,一定要掌握,并做到熟练运用,我们平常使用的APP和软件都是这么做出来的。
超平老师给你留一道思考题,如果我们要让4颗小星星逆时针移到下一个顶点,该怎么做呢?
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄