[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第162讲。
第15届蓝桥杯第3次STEMA测评已于2023年12月17日落下帷幕,编程题一共有6题,分别如下:
多变的太阳
转动的风车
六花阵图
变色游戏
筛选数据
消失的水母
六花阵图,本题是2023年12月17日举行的第15届蓝桥STEMA测评Scratch编程初/中级组编程第3题,题目要求编程绘制六花阵图,要求必须全部使用画笔来实现。
先来看看题目的要求吧。
背景信息:
六花阵:唐代名将李靖在著名军事家诸葛亮开创的八阵图基础上推衍发明的一种阵法。
编程实现:
六花阵图。
注意:六花阵图必须使用画笔绘制,画面中不允许出现其他角色,否则0分。
具体要求:
1). 每次点击绿旗,在舞台上出现一个红色空心正方形,如图所示;
2). 等待1秒后,在舞台上出现一个颜色渐变的空心圆(圆心为正方形的中心),如图所示;
3). 等待1秒后,在圆的外围同时出现六个大小相同、颜色均不相同,且位置均匀分布的实心矩形,相邻两个矩形无重合部分,如图所示。
评判标准:
10分:满足"具体要求"中的1);
15分:满足"具体要求"中的2);
25分:满足"具体要求"中的3)。
本题只有1个画笔角色,如图所示:
题目要求六花阵图必须使用画笔绘制,画面中不允许出现其他角色,否则0分。因此,这里所有的效果都必须使用画笔来实现。
仔细观察六花阵图,可以发现,它是由如下3种基本图形构成的:
空心正方形
彩色圆环
实心矩形
所以,我们可以先分步实现这3个基本图形的绘制,然后再将它们组合起来,就可以得到完整的六花阵图。
这不就是在学习编程时反复提到的计算思维吗,将一个复杂的问题拆分成几个简单问题,然后逐一解决。
这3种图形,有空心的,也有实心的,有正方形,有矩形,有圆形,但是它们都有一个共同的特点,就是都要从中心点开始画,这样才能确保六花阵图是完美对称的。
因此,我们采取中心法来绘制,所谓中心法是指将画笔移到某个位置,以该位置为中心来绘制图形。
1.空心正方形
正方形的绘制比较简单,很多同学不假思索就可以写出如下代码:
代码是正确的,绘制效果如下:
效果还不错,只是没有居中,如果要居中,则需要调整画笔的初始位置。在上面的代码中,边长为50,可以将画笔的初始位置移到(-25,25),这样就可以让正方形居中了。
其实,我们只需要稍作一点点修改就可以,先将画笔移到中心点,比如舞台中心(0,0),然后将画笔移到左上角的顶点(-25,25),再画正方形就可以了。
2.彩色圆环
关于圆环的绘制,在《完美的圆形-Scratch绘制圆、圆弧和扇形的编程技巧》这篇教程中有详细介绍。
其核心思路是在圆心位置,将画笔移到半径长度的距离,画一个点,然后回到圆心,旋转1度,重复360次,就可以绘制一个空心圆环。
3.实心矩形
这是本题的难点,我们可以分两步来实现,先绘制空心矩形,再绘制实心矩形。
空心矩形比较简单,基本画法如下:
绘制图形如下:
为了方便,将矩形的长度设置为宽度的两倍,并且先画宽,再画长,这和最终要呈现的效果是一致的。
怎么从空心变成实心呢,思路其实很简单,就是不停的重复这个过程。你还记得实心五角星的绘制吗,可以参考《你真的会用Scratch绘制五角星吗-95%的人不知道的巧妙画法》这篇教程。
要确保从矩形的中心点开始,应该先画最小的矩形,每绘制一条边,就旋转90度,同时边长增加一点,重复若干次数就可以。
核心代码如下:
绘制效果如下:
为什么每次边长只增加0.2呢?
如果每次增加1,就会出现如下情况:
看到左上角多出的一部分吗,边长增加的幅度越大,就越明显。
思路有了,接下来,我们就进入具体的编程实现环节。
根据上面的思路分析,我们分5步来编写程序:
绘制空心正方形
绘制圆环
绘制实心矩形
绘制六个矩形
完成六花阵图
1. 绘制空心正方形
为了方便,我们将绘制空心正方形的代码定义成自制积木,如下:
简单说明三点:
1). 这里增加了参数边长,更加灵活,可以绘制任意边长的正方形;
2). 这里先将画笔移到中心点的左上角,表示先绘制上方的边长,一定要确保面向90度;
3). 定义自制积木时,需要勾选”运行时不刷新屏幕“,确保瞬间画好。
2. 绘制圆环
同理,我们使用自制积木来绘制圆形,代码如下:
简单说明两点:
1). 为了方便,增加了参数半径,这样可以绘制任意大小的圆形;
2). 每次将颜色增加1,确保圆环是彩色的。
3. 绘制实心矩形
根据前面的思路,我们先实现单个矩形的绘制,再定义一个自制积木,如下:
代码就不再解释了,注意在定义自制积木时,别忘了勾选”运行时不刷新屏幕“。调用自制积木时,设置一个长度,就可以绘制一个实心矩形,非常方便。
4. 绘制6个矩形
六花阵图的最外层是6个矩形,它们围成一圈,如果将矩形看成是一条边的话,这就是一个正六边形。
仍然使用自制积木,代码如下:
简单说明三点:
1). 每次都是从舞台中心移到一定距离,绘制一个矩形,这里是130步,你也可以换成其它数值;
2). 绘制完一个,右转60度,改变画笔颜色;
3). 定义自制积木时,勾选”运行时不刷新屏幕“,确保同时画出六个矩形。
5. 完成六花阵图
按照题目的要求,将上面的自制积木组合起来,就可以了,代码如下:
运行程序,效果如下:
至此,整个作品就创作好了,一个漂亮的六花阵图正式落地啦。
本题是初/中级组编程部分第3题,分数为50分,积木块数量55个左右,涉及到的知识点主要包括:
Scratch画笔模块;
循环编程,主要是指定次数循环;
舞台坐标;
运动编程,包括移动和旋转;
自制积木及其参数;
本题难度中等偏上,完成时间15分钟左右,考查的重点是画笔。难点有两个,一是如何绘制实心矩形,二是如何绘制平均分布的6个实心矩形。
对于实心形状的绘制,有的同学采取的方式是设置较粗的画笔,这个对圆形是适用的,对其它图形并不适用,你知道是为什么吗?
常见的方法有两种,一是借助其它角色进行连线填充,第二就是边长渐增法,具体的绘制请参考五角星的那篇教程。相对来说,后者更为简单,也更加灵活,必须要熟练掌握。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香
需要素材和源码的,可以移步至“超平的编程课”gzh。