莲花-第10届蓝桥杯Scratch选拔赛真题精选

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第99讲。

蓝桥杯选拔赛每一届都要举行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♪(・ω・)ノ。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值