转动的图形-第16届蓝桥第5次STEMA测评Scratch真题第4题
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥真题,这是Scratch蓝桥真题解析第227讲。
第16届蓝桥第5次STEMA测评已于2025年3月9日落下帷幕,编程题一共有5题(初级组只有前4道编程题),分别如下:
-
变色龙
-
左顾右盼
-
比较大小
-
转动的图形
-
动物乐园
转动的图形,本题是2025年3月9日举行的蓝桥STEMA测评Scratch编程初/中级组编程第4题。题目要求编程创作转动的图形作品,点击绿旗,先绘制一个蓝色的正六边形,接着在六边形的六条边上各画出一个等边三角形,然后绘制两段颜色不同的半圆弧,最后除圆之外的所有图形开始顺时针持续转动。
先来看看题目的要求吧。
一.题目说明
编程实现:
转动的图形。
具体要求:
1). 点击绿旗,在舞台中心出现一个蓝色的正六边形(线的粗细为 5),如图所示;
2). 1秒后,依次在六边形的六条边上各画出一个等边三角形(线的粗细为 5),且每个等边三角形与正六边形有一条重合边;
3). 等边三角形与正六边形重合边的颜色都为蓝色,其他边颜色均为黄色,如图所示;
4). 1秒后,在舞台中心画出一个圆(线的粗细为 8),且六个等边三角形的顶点均在圆上;
5). 圆由两段颜色不同、长度相同的弧线组成(自选两种颜色),如图所示;
6). 1秒后,除圆之外的所有图形开始顺时针持续转动。
评分标准:
-
10分:满足“具体要求”中的1);
-
12分:满足“具体要求”中的2);
-
12分:满足“具体要求”中的3);
-
12分:满足“具体要求”中的4);
-
12分:满足“具体要求”中的5);
-
12分:满足“具体要求”中的6)。
二.思路分析
本题只有1个画笔角色,如图所示:
本题考查的知识点包括scratch画笔、运动编程和自制积木等,我们从形状和状态两个维度对本作品进行讨论和分析。
从形状来看,要绘制的图形包括如下三种:
-
正六边形
-
六角星
-
半圆环
这里要重点说明的是六角星,题目要求要绘制6个等边三角形,其中底边和正六边形颜色相同,并且位置重合,如果去掉蓝色的正六边形,黄色部分就是一个六角星,如图所示:
因此,我们可以直接绘制一个黄色六角星,其基本单位是两条直线和一个夹角(120度),类似于符号“^”,如图:
然后将这个^图案旋转6次,就可以得到一个完整的六角星了。
从状态来看,分为旋转和静止两种不同的状态,如下:
-
旋转,包括正六边形和六角星;
-
静止,包括两个半圆环;
如果都是静止不动的,处理起来比较容易;如果都是旋转的,处理起来也比较容易,可此处偏偏是动静结合,很多同学开发犯难了。
要实现正六边形和六角星的旋转,就必然要改变画笔的方向;但对于一白一红两个半圆来说,其分界线是固定不变的,也就意味着画笔的方向应该保持不变,如此看来,岂不是自相矛盾?
其实,解决思路也非常简单,再来一支画笔。
这样一来,一支画笔负责绘制动态旋转的正六边形和六角星,一支画笔负责绘制静止的半圆环。
至于增加画笔的方式有两种,一种是再添加一个角色,一种则是使用克隆体。
思路有了,接下来,我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析,我们分4步来编写代码:
-
绘制正六边形
-
绘制六角星
-
图形的旋转
-
绘制两个半圆
1. 绘制正六边形
由于代码比较多,超平老师建议使用函数的编程思想,使用自制积木来组织代码。
在画笔角色中,定义自制积木来绘制正六边形,代码如下:
代码不难,强调4个细节:
1). 在定义自制积木的时候,勾选“运行时不刷新屏幕”,这样可以瞬间绘制好正六边形;
2). 为了灵活绘制不同大小的正六边形,这里增加了一个参数“边长”,这不是必须的,你也可以去掉,直接使用固定的数值;
3). 画笔的初始位置是舞台中心(0, 0),这也是图形旋转的中心,初始方向是90度,我们要使用相对运动将画笔移到正六边形的左上角,因此先左转120度,前进一条边的距离,然后在右转120度,恢复到初始方向;
4). 六边形绘制完成后,画笔处在正六边形的左上角,方向向右,这一点非常重要,如图所示:
是否要回到舞台中心呢,暂时不需要,因为接下来要从这个位置开始绘制六角星了。
2. 绘制六角星
在画笔角色中使用自制积木来绘制六角星,代码如下:
代码比较多,强调4点:
1). 在定义自制积木的时候,请勾选“在运行时不刷新屏幕”,确保瞬间绘制六角星;
2). 此处的参数“边长”是为了灵活设置六角星的大小而添加的,并不是必须的;
3). 每次绘制^形状时,先左转60度,完成后再右转180度,确保恢复到绘制前的方向,然后旋转60度,重复6次,就可以绘制一个完整的六角星了,为了方便理解,这里连续使用了两个右转指令(右转180度和右转60度);
4). 绘制完六角星之后,画笔又回到了左上角,此时要使用相对运动的方式回到舞台中心,这就是最后3行代码的作用。
在上面定义的两个自制积木中,我们使用了两个非常重要的模型,“复原模型” + “相对运动模型”,这是图形旋转的两个核心要素。
所谓复原模型是指每次绘制完成之后,要确保回到初始状态,包括位置和方向;所谓相对运动模型,是指使用“移动10步”指令来实现角色的移动。
3. 图形的旋转
在画笔角色中,添加绿旗指令,并编写代码如下:
代码不难理解,说明3点:
1). 初始位置和方向一定要设置,确保旋转之前的效果和题目要求一致;
2). 所谓的旋转其实就是换个方向重新绘制,在绘制之前要先擦除之前所有的图形;
3). 六边形的边长可以自由设置,尽量和题目要求效果一致,右转的度数也可以自由设置。
4. 绘制两个半圆
根据前面的思路分析,我们再添加一支画笔,此处我使用第一种方式,复制一个画笔角色,如图:
切换到画笔2角色,定义一个自制积木用于绘制半圆环,代码如下:
都是大家比较熟悉的代码,说明两点:
1). 添加参数“半径”,是为了灵活设置圆环的大小,并不是必须的;
2). 这是经典的中心法,每次离开圆心一定的距离(半径长度),落笔打一个点,然后回到圆心位置,旋转1度,重复180次,就可以绘制一个半圆环了;
在画笔2角的绿旗指令下,编写代码如下:
代码比较短,强调3点:
1). 注意角色的初始化,初始位置是舞台中心,方向是0度(向上),这是两个圆环的分界线,你也可以设置为面向180度(向下);
2). 这里使用了等待2秒,目的是等待正六边形和六角星绘制完成之后才开始绘制圆形;
3). 之所以要重复执行,是因为任何角色中的“擦除全部”指令会将画笔绘制的所有内容全部擦掉。
至此,整个作品就创作好了。
四.总结与思考
本题是初/中级组编程部分第4题,分数为70分,积木块数量65个左右,涉及到的知识点主要包括:
-
Scratch画笔;
-
运动编程;
-
自制积木及参数;
-
循环及嵌套循环;
这是本次stema测评的第4题,也是初级组最后一题,难度较大,完成时间35分钟左右。关键点有两个,一是运用分解思维,将复杂的问题变成多个简单问题,并逐一解决;二是使用两支画笔来绘制图形,一支画笔负责绘制旋转的图形,另一支画笔负责绘制静止的圆环。
在绘制图形的过程中,灵活运用了如下几个模型:
-
360万能公式模型;
-
中心法模型;
-
复原模型;
-
相对运动模型;
-
先擦再画模型;
这些模型并不是孤立使用的,通常需要结合多种模型来绘制一个图形,只要你熟练掌握了这些模型,就没有你画不出来的图形和效果。
超平老师给你留两道思考题:
1). 如果将题目稍作修改,绘制6个等边三角形,其中底边是蓝色的,另外两条边是黄色的,然后再旋转,该怎么做呢?
2). 如果采用克隆方案来绘制两个半圆,代码又该怎么写呢?
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄