[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第6讲。
第12届蓝桥杯青少年组国赛于2021年5月29日举行,本次赛事仍然采取了在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
旋转的风车,本题是第12届蓝桥杯Scratch国赛真题编程部分的第2题,初级组和中级组都有此题。题目要求考生使用Scratch画笔绘制一个旋转的风车,本题难度系数为4,分值为60分。
本题将Scratch编程和数学几何知识紧密结合在一起,同时又涉及到帧动画原理及其实现,是一道综合性非常强的跨多学科的好题目。
先来看看题目的详细说明吧。
题目说明
编程实现:
旋转的风车(画笔题目,使用画笔绘制不能有其他角色出现,否则0分)。
![图片[1]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-54.png)
具体要求:
1). 点击绿旗,使用画笔画出风车的三角形基座(大小颜色自己设置,笔粗:20);
2). 画出四个长方形组成的扇叶(大小颜色自己设置);
3). 扇叶可以顺时针持续转动(扇叶为原地转动);
4). 在舞台上能够完整呈现画出的风车(基座和扇叶不能分离)。
评判标准:
- 10分:满足要求1;
- 15分:满足要求2;
- 20分:满足要求3;
- 15分:满足要求4。
效果预览
思路分析
乍一看,这是一道简单的编程题,但仔细阅读题目,你会发现并不简单,题目要求使用Scratch中画笔模块相关指令绘制风车,并实现动态旋转效果,而不是画一个风车造型,然后旋转。如何编程实现呢?我们可以分两步:
- 绘制静态的风车
- 让风车旋转起来
其中,第一步相对比较简单,真正的难点是第二步,绘制出来的图形还可以动起来,真的有这么神奇吗?带着这个疑问,我们来看看具体的实现过程吧。
编程实现
1.绘制静态的风车
根据刚才的分析,我们先绘制静态的风车,风车是由1个三角形的基座和4个长方形构成的扇叶组成。
这里的三角形是一个等腰三角形,也就是左右两条边的长度相同,处在底部的边要短一点。对于Scratch编程而言,其实就是画三条直线,首尾相连,其中两条直线长度一样,两个夹角大小一样,具体怎么做呢?
一般有两种处理方式:
- 移动指定步数 + 右转某个角度
- 确定好三个顶点的位置,直接画线
先来看一下第一种画法,其代码如下:
![图片[2]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-55.png)
看到这个代码你有什么感觉,是不是有点懵,然后是疑点重重,右转75度、105度度是怎么算出来的,移动150步、80步又是如何确定的呢?
很显然,对于中小学生而言,这种方法理解起来比较困难,可操作性也不强,我们再来看看第二种方法,先确定好三个顶点的位置。
第一个顶点比较好确定,就是舞台中心,其坐标为(0,0),根据坐标轴的对称性原理,另外两个顶点相对于Y轴是对称的,如果其中一个顶点到x坐标是50,那么另一个顶点的x坐标就是-50,至于y坐标就简单多了,大致估计一下即可,比如-150,如图所示:
![图片[3]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-56.png)
确定好了3个顶点,绘制就非常简单了,为了方便,将这部分的代码定义为一个自制积木,如图:
![图片[4]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-57.png)
和第一种方法相比较,这种方法是不是更容易理解了,关键是可操作性强,超平老师强烈推荐这种方式。
接下来我们再绘制扇叶,扇叶是有4个长方形构成的,围成一圈,这个比绘制三角形要简单多了,为了方便还是将其定义为一个自制积木,代码如下:
![图片[5]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-58-322x1024.png)
需要说明两点:
1). 这里使用了嵌套循环,其中内层的循环是绘制一个扇叶(长方形),长宽分别为130和30,单位是步(像素),外层循环是绘制4个扇叶。
2). 我们给自制积木添加了一个参数“方向”,这样就可以灵活设置风车的方向,为下一步的旋转做好准备。
2.让风车旋转起来
如何让风车旋转起来,这就是涉及到帧动画原理了,什么是帧动画?
所谓帧动画,就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。
是不是不好理解,没关系,先来看一个翻书动画吧:
翻书动画就是一个帧动画,这里的每一页纸就是一帧,翻书的过程就是连续播放,从而形成动画效果。
简单来说,帧动画就是由N张静态图片收集起来,然后通过控制依次显示这些图片,因为人眼”视觉残留”的原因,会让我们造成动画的”错觉”,跟放电影的原理一样!
一旦你理解了帧动画,我们要让风车旋转起来就变得容易多了。尽管绘制出来的风车是静止不动的,但是我们可以从一个方向开始(比如90度),先绘制一个风车,然后将方向变为91度,再绘制一个风车,依此类推…
这里的每一个风车就是一帧,每绘制一个新的风车,就将原来的内容擦除掉,这样就可以形成一个帧动画,从而得到一个动态的旋转风车效果。
代码其实非常简单,如下:
![图片[6]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-59.png)
至此,一个动态旋转的风车作品就完成了,是不是挺酷的。
总结与思考
本题看似简单,涉及到的知识面却不少,包括:
- Scratch画图流程及绘制相关指令;
- Scratch中的坐标系及轴对称特性;
- 嵌套循环的使用;
- 自制积木及其参数的使用;
- 三角形和长方形的特点及绘制;
- 帧动画的原理及编程实现。
不知道你发现了没有,蓝桥杯的比赛题目还是有点水平的,通过一个作品创作就可以将多个跨学科的知识融合到一起,这也正是学习少儿编程的价值所在,培养孩子的跨学科思维和能力。
需要素材和源代码的,可以转到这里,旋转的风车-2021.5.29蓝桥杯国赛第2题。
暂无评论内容