旋转的风车-第12届蓝桥杯Scratch国赛真题第2题

[导读]:超平老师计划推出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国赛教程-超平的编程课

具体要求

1). 点击绿旗,使用画笔画出风车的三角形基座(大小颜色自己设置,笔粗:20);

2). 画出四个长方形组成的扇叶(大小颜色自己设置);

3). 扇叶可以顺时针持续转动(扇叶为原地转动);

4). 在舞台上能够完整呈现画出的风车(基座和扇叶不能分离)。

评判标准

  • 10分:满足要求1;
  • 15分:满足要求2;
  • 20分:满足要求3;
  • 15分:满足要求4。

效果预览

思路分析

乍一看,这是一道简单的编程题,但仔细阅读题目,你会发现并不简单,题目要求使用Scratch中画笔模块相关指令绘制风车,并实现动态旋转效果,而不是画一个风车造型,然后旋转。如何编程实现呢?我们可以分两步:

  • 绘制静态的风车
  • 让风车旋转起来

其中,第一步相对比较简单,真正的难点是第二步,绘制出来的图形还可以动起来,真的有这么神奇吗?带着这个疑问,我们来看看具体的实现过程吧。

编程实现

1.绘制静态的风车

根据刚才的分析,我们先绘制静态的风车,风车是由1个三角形的基座4个长方形构成的扇叶组成。

这里的三角形是一个等腰三角形,也就是左右两条边的长度相同,处在底部的边要短一点。对于Scratch编程而言,其实就是画三条直线,首尾相连,其中两条直线长度一样,两个夹角大小一样,具体怎么做呢?

一般有两种处理方式:

  • 移动指定步数 + 右转某个角度
  • 确定好三个顶点的位置,直接画线

先来看一下第一种画法,其代码如下:

图片[2]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课

看到这个代码你有什么感觉,是不是有点懵,然后是疑点重重,右转75度、105度度是怎么算出来的,移动150步、80步又是如何确定的呢?

很显然,对于中小学生而言,这种方法理解起来比较困难,可操作性也不强,我们再来看看第二种方法,先确定好三个顶点的位置

第一个顶点比较好确定,就是舞台中心,其坐标为(0,0),根据坐标轴的对称性原理,另外两个顶点相对于Y轴是对称的,如果其中一个顶点到x坐标是50,那么另一个顶点的x坐标就是-50,至于y坐标就简单多了,大致估计一下即可,比如-150,如图所示:

图片[3]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课

确定好了3个顶点,绘制就非常简单了,为了方便,将这部分的代码定义为一个自制积木,如图:

图片[4]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课

和第一种方法相比较,这种方法是不是更容易理解了,关键是可操作性强,超平老师强烈推荐这种方式。

接下来我们再绘制扇叶,扇叶是有4个长方形构成的,围成一圈,这个比绘制三角形要简单多了,为了方便还是将其定义为一个自制积木,代码如下:

图片[5]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课

需要说明两点:

1). 这里使用了嵌套循环,其中内层的循环是绘制一个扇叶(长方形),长宽分别为130和30,单位是步(像素),外层循环是绘制4个扇叶。

2). 我们给自制积木添加了一个参数“方向”,这样就可以灵活设置风车的方向,为下一步的旋转做好准备。

2.让风车旋转起来

如何让风车旋转起来,这就是涉及到帧动画原理了,什么是帧动画?

所谓帧动画,就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。

是不是不好理解,没关系,先来看一个翻书动画吧:

翻书动画就是一个帧动画,这里的每一页纸就是一帧,翻书的过程就是连续播放,从而形成动画效果。

简单来说,帧动画就是由N张静态图片收集起来,然后通过控制依次显示这些图片,因为人眼”视觉残留”的原因,会让我们造成动画的”错觉”,跟放电影的原理一样!

一旦你理解了帧动画,我们要让风车旋转起来就变得容易多了。尽管绘制出来的风车是静止不动的,但是我们可以从一个方向开始(比如90度),先绘制一个风车,然后将方向变为91度,再绘制一个风车,依此类推…

这里的每一个风车就是一帧,每绘制一个新的风车,就将原来的内容擦除掉,这样就可以形成一个帧动画,从而得到一个动态的旋转风车效果。

代码其实非常简单,如下:

图片[6]-scratch旋转的风车_第12届蓝桥杯Scratch国赛教程-超平的编程课

至此,一个动态旋转的风车作品就完成了,是不是挺酷的。

总结与思考

本题看似简单,涉及到的知识面却不少,包括:

  • Scratch画图流程及绘制相关指令;
  • Scratch中的坐标系及轴对称特性;
  • 嵌套循环的使用;
  • 自制积木及其参数的使用;
  • 三角形和长方形的特点及绘制;
  • 帧动画的原理及编程实现。

不知道你发现了没有,蓝桥杯的比赛题目还是有点水平的,通过一个作品创作就可以将多个跨学科的知识融合到一起,这也正是学习少儿编程的价值所在,培养孩子的跨学科思维和能力


需要素材和源代码的,可以转到这里,旋转的风车-2021.5.29蓝桥杯国赛第2题

© 版权声明
THE END
喜欢就支持一下吧
点赞79 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容