[导读]:蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。
莲花,本题是第10届蓝桥杯Scratch真题,出现在2019年的市选拔赛考试中,题目要求使用Scratch中的画笔相关指令绘制出一幅四层结构的莲花图形,每一层都是由12个基本花瓣构成的,由外至内每一层的花瓣长度和大小都依次减小,颜色值则不停的增加。
先来看看题目的要求吧。
一.题目说明
编程实现:
1). 设置背景为白色,以坐标(0,0)点为中心绘制一个如下图所示的莲花图形;
2). 四层结构,基本单元中最大的花瓣边长为20,画笔大小为7,颜色值为0,每向内绘制一层,边长减小5,画笔大小减小1,画笔颜色值增加10。
评判标准:
- 10分:设置背景为白色,画笔大小为7,颜色值为0;
- 30分:在10分标准基础上,能够绘制一个基本花瓣;
- 40分:在30分标准基础上,能够绘制一圈完整的基本花瓣,共12个;
- 45分:在40分的基础上,能够绘制题目要求图案,包括4层花瓣;
- 50分:画笔每向内绘制一层,边长减小5,画笔大小减小1,画笔颜色值增加10。
二.作品效果
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题属于Scratch画笔绘制作品,只有一个默认的小猫角色, 如图所示:
考察的重点是画笔相关指令的灵活运用。乍一看,不知道从何下手,根据题目描述,我们可以发现莲花是一个四层结构,每一层又有12个花瓣组合而成,所以花瓣是这个作品的关键,如果花瓣绘制好了,其它部分相对就比较简单了。
所以,我们可以将作品分成如下3步完成:
- 绘制一个花瓣
- 绘制外层花瓣
- 绘制莲花
四.编程实现
根据思路分析,我们分如下3步来编写程序:
- 绘制一个花瓣
- 绘制外层花瓣
- 绘制莲花
1. 绘制一个花瓣
绘制花朵的第一步是先绘制一个花瓣,先来看看生活中的花瓣,如图所示:
从图中可以看出,花瓣可以简单地看成是由两个圆弧组成的,因此绘制花瓣时,可以通过绘制两个对称的圆弧来实现,如下图所示:
而圆弧又是圆环的一部分,实际上是由很多小的线段组成,我们只需要在绘制线段时不停地旋转画笔即可实现。
我们先来绘制一个1/4圆弧,在小猫角色中编写代码如下:
需要说明的是,这里右转的角度并不是固定的,可以大一点,也可以小一点,但是要确保重复次数*右转角度 = 90,这里的20是指最外层花瓣的大小,执行代码,绘制效果如下:
接下来还需要绘制一个1/4圆弧,但是需要先右转90度角才行,否则就和之前的1/4圆弧连在一起形成半圆了,继续编写代码如下图所示:
再次执行代码,结果如图所示:
如此一来,我们的第一个基本花瓣就绘制好了,还不错吧。
为了方便,我们使用函数的编程思想将其封装起来,也就是定义一个自制积木用于绘制基本花瓣,编写代码如图所示:
在这里,有两点需要注意:
1). 我们在自制积木中添加了一个参数“大小”,这个是用来控制花瓣大小的,因为我们的莲花是四层结构,每一层的花瓣大小各不相同。
2). 在绘制完第二个1/4圆弧之后,增加了一个右转90度指令,这个是确保绘制完一个基本花瓣后,角色又回到原始角度方向,确保下一次绘制花瓣时方向不会有偏差。
2. 绘制外层的12个花瓣
有了基本花瓣,接下来就可以绘制最外层的花瓣了,根据题目描述,边长是20,画笔大小为7,颜色值为0,一圈是12个基本花瓣,所以这里需要使用循环,12个花瓣,就是循环12次,每绘制一个花瓣,就旋转 360 / 12 = 30度。
对应的代码如下图所示:
执行程序,绘制的花瓣效果如下:
3. 绘制莲花
接着就是绘制里面的3层花瓣了,相信聪明的你已经想到了,这里可以使用循环。不错,使用循环可以极大的简化代码,不过需要注意的是,每一层花瓣的长度、颜色和画笔粗细都不一样,每向内绘制一层,边长减小5,画笔大小减小1,画笔颜色值增加10。
其中,画笔大小的减小和画笔颜色的增加有相应的指令直接使用,相对比较简单,那么,边长要怎么逐次减少呢?
数字本身是不能变化的,比如20就是20,15就是15,无论什么时候都是固定不变的,在编程语言中,这叫常量,就是指不能变化的量。
内容可以变化的量叫变量,因此,我们可以定义一个变量来表示边长的大小,将它的初始值设置为20,每绘制完一圈花瓣,再将变量减少5,也就是增加-5,这部分的代码如下:
执行程序,一朵美丽的莲花就正式诞生了,至此,整个作品就创作完成了,一起来欣赏一下自己绘制的花瓣吧
。
五.总结与思考
本题难度系数为4,积木块数量30个左右 ,涉及到的知识点主要包括:
- 循环编程,包括指定次数循环以及循环的嵌套使用;
- 画笔相关指令,包括擦除、落笔、抬笔、设置画笔粗细、设置画笔颜色、更改画笔粗细、更改画笔颜色等;
- 运动编程,包括移动10步、右转指令、面向方向指令和移到(x,y)等;
- 自制积木及其参数的使用;
- 变量的使用。
本题难度中等,关键是如何绘制一个基本花瓣,如果是第一次碰到这类题目,可能有些不知所措,所以说,学习在于积累,一旦掌握了常见图案的绘制和基本的Scratch编程技巧,这类题目就是小菜一碟了。
在绘制莲花的过程中,我们使用了逐层分解的思维模型,将一朵莲花拆分成4层,每一层又拆分成12个花瓣,每个花瓣又拆分成两个1/4圆弧,一步一步缩小问题的规模,将复杂问题变成简单的问题。这种分析问题、解决问题的思维正是编程所提倡的计算思维,也是我们学习编程的真正意义所在。
如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。