最新消息:

Scratch:海龟绘图(六)——来点颜色看看

Scratch 少儿编程 3309浏览 0评论

友情提示:视频教程观看时请手动设置清晰度。

可能这几节课以来,您心里一直有个疑问——绘制的图形虽然越来越复杂了,可还是不够漂亮啊!难道海龟只能绘制蓝色的线条吗?

 

当然不是!今天,我们就要给您点“颜色”看看。

其实,让海龟画出不同的颜色并不难,只需要使用一块“画笔”部分的“画笔颜色设定为……”积木,即可将海龟绘出的图形的颜色设定为您喜欢的颜色,如下图:

 

Scratch:海龟绘图(六)——来点颜色看看

如果您选择了“红色”,那么点击绿旗后,就会得到如下的结果:

 

Scratch:海龟绘图(六)——来点颜色看看

嗯,果然不再是单调的蓝色线条了,如您所愿,现在已经变成了单调的红色线条。

什么,这不是您想要的?您想要的是“绚丽多彩”?

好吧,谁让我在今天项目的前导部分答应您了呢。说到就要做到,现在我们就来研究一下绚丽多彩。

 

既然是“多彩”,肯定就要在程序运行的过程中多次使用将画笔颜色设定为……”积木,并且每次使用都要设定为不同的颜色。我们再来看一下这段“单调的红线条”代码

 

Scratch:海龟绘图(六)——来点颜色看看

这段代码可以分为两大部分:

第一部分(1⃣️)主要进行一些绘图前参数的设置,行话叫“初始化”,以现在计算机的运行速度,这部分会在不到1毫秒的时间内被“一笔带过”。

第二部分(2⃣️)才是真正绘图的部分,我们使用了一个“计数循环”,让小海龟在这个循环中“转悠”上百次,来为我们绘制美丽的图形。

如果要让您多次使用将画笔颜色设定为……”积木且每次都要设定不同颜色,您会把这些墨绿色的积木放在哪儿?是“初始化部分”还是“循环部分”呢?

经过之前的分析,相信您会作出明智的选择。因为小海龟在绘图的过程中需要“不断”的改变画笔颜色,如果放在“初始化部分”,就会在“瞬间”被执行完毕,又如何能在整个绘图过程中“持续”发挥作用呢?所以,正确的做法自然是将“设定画笔颜色”的积木放在循环部分。

 

我们知道,“将画笔颜色设定为……”积木每次可以将一种颜色设定为我们喜欢的颜色,现在需要6种颜色,就需要6块这样的积木。那么现在问题又来了——“循环部分”就这4句话,如何能“塞下”这6块积木呢?

让我们再来仔细分析一下现在的处境——小海龟每次循环只绘制“1条边”并转向,而这个图形是在每次转向后、绘制下条边之前变换颜色,那么我们是需要每次循环变换1次颜色呢、还是变换6次颜色呢?当然是每次循环变换1次颜色。变换1次颜色也就只需要一块将画笔颜色设定为……”积木。这下好了,不用担心循环里堆满墨绿色积木了。

 

现在还有最后一个问题——如何用“1块”将画笔颜色设定为……”积木变换“6种”颜色?这就要请出我们今天的核心技术——列表——来帮忙了

在之前的项目中我们使用过“变量”,1个变量可以存储1个“值”或1个“数据”。与变量不同,“列表”可以存储“多个值”,从而使程序可以高效的处理“一系列”的数据。就像是平时我们用的“整理箱”,单个的整理箱就像是“变量”,把好几个整理箱摞在一起再“编上号”,就成为了一个“列表”。为什么要强调“编上号”呢?因为我们往列表中“放”数据或是从列表中“取”数据,都是根据这个“编号”来进行的。先说这么多,下面看具体使用方法。

 

Scratch:海龟绘图(六)——来点颜色看看

从“积木区”的“数据”部分,点击“建立一个列表”按钮,会弹出“新建列表”对话框。从该对话框中输入“列表名称”,下面的选项建议选择“仅适用于当前角色”。因为我们需要建立一个跟“颜色”有关的列表,所以这里我们的“列表名称”我们填“color”。而那个选项之所以不选“适用于所有角色”,是因为按照程序设计的原则,如果没有充足而正当的理由(比如需要和其它角色“共享”数据),绝不要轻易创建带“所有”字样的“变量”或“列表”。

点击“确定”后,“积木区”会多出一大堆和我们“color列表”相关的“新积木”(如下图)。同时,在左侧的“舞台”上,会显示一个灰色的矩形框,展示列表的状态,包括:

(1)标题:“turtle:color”,表示列表的名称为“color”,且“专属于”角色“turtle”;

(2)内容:“(empty)”,表示现在的列表为“空”,没有内容;

(3)列表长度:“长度:0”,再次印证了列表为“空”,因为“整理箱”的“个数”为“0”。

注意红箭头所指的圆型“加号按钮”,使用这个,我们可以为列表添加数据。

 

Scratch:海龟绘图(六)——来点颜色看看

我们使用“➕”按钮为列表添加6个数据,分别对应6种画笔的颜色值,如下图所示。这6个数据前的数字“1~6”,就是每个数据的“编号”(行话叫“索引”或“下标”,外国话叫“index”),我们的程序就是根据这个“编号”来读取或向列表中存储数据的。

 

Scratch:海龟绘图(六)——来点颜色看看

如果您觉得这个大框框放在舞台上不顺眼,可以将“积木区”中对应于“列表color”积木前的✅去掉。

 

现在准备工作已就绪,看看我们的代码中该如何使用“列表”中已经存好的数据。经过前面的分析可知,小海龟每次循环只绘制“1条边”并转向,而这个图形是在每次转向后、绘制下条边之前变换颜色,而且要用“1块”将画笔颜色设定为……”积木“循环使用”6种颜色。那么我们自然就想让小海龟在绘制“第1条边”时使用列表中的“1号颜色”,绘制“第2条边”时使用列表中的“2号颜色”,……以此类推,绘制“第7条边”时再次使用列表中的“1号颜色”,绘制“第8条边”时使用列表中的“2号颜色”……

如何做到这一点呢?我们希望最好能有一个变量,在绘图的过程中能“从1开始逐一增加到6”,然后再回到“1”,再“逐一增加到6”。怎样得到这样的变量呢?这里有一个编程界常用的方法(用个流行词叫“套路”),就是“求余数”。如果您对小学数学还有点印象的话,应该对下面的计算不太陌生:

0 ➗ 6 = 0 …… 0

1 ➗ 6 = 0 …… 1

2 ➗ 6 = 0 …… 2

3 ➗ 6 = 0 …… 3

4 ➗ 6 = 0 …… 4

5 ➗ 6 = 0 …… 5

6 ➗ 6 = 1 …… 0

7 ➗ 6 = 1 …… 1

8 ➗ 6 = 1 …… 2

……

观察一下上述算式中省略号后的余数,我们发现,这些余数组成了一个“从0到5”的循环。可我们需要的是“从1到6”啊!这也难不倒我们,给每个余数“加上1”不就是“从1到6”了嘛!

现在余数有了,那么用谁去除以6得到我们想要的余数呢?看看循环里,从1开始不断增加的那个“变量”是什么?对!就是“边长”。

下面来看具体操作:

(1)从“积木区”挑选“1项于color”积木。如果只是从已经存储好值的列表中获取数据,用这一块积木就够了;

(2)按照下图所示,拼好我们“根据余数从列表中读取颜色数值,并根据颜色数值设定画笔颜色”这块关键的积木。读起来好长对不对?因为我们这一块积木要做好几件事,所以我把这块积木的结构进行了详细的分解展示:

 

Scratch:海龟绘图(六)——来点颜色看看

(3)把这块关键的积木放到循环中,得到我们最终的代码如下:

 

Scratch:海龟绘图(六)——来点颜色看看

忙活了大半天,终于要看到成果了。赶快点击绿旗运行一下吧!

您可能也觉得有些颜色在白色的舞台背景下看起来不够靓丽,您尽可以在列表中设定自己喜欢的颜色值,或是像下面的视频中那样把背景改为纯黑色。您是否也得到了这样的结果呢?注意程序运行中列表中的“编号”在按从上到下的顺序闪动,说明我们正在读取其中的数据。

 

 

项目小结:

在今天的项目中,我们:

  1. 学会了积木区墨绿的“画笔”部分中,将画笔颜色设定为……”积木的使用方法

  2. 学会了在积木区橙色的“数据”部分创建列表,以及设置和读取列表中数据的方法

  3. 学会了使用积木区绿色运算”部分中的“除以的余数”积木,通过循环,得到一个数字序列的方法

  4. 学会了如何把上述3种新技能结合起来,让小海龟画出绚丽多彩图形的方法。

⚠️ 今天课程内容较多,而且“列表”的创建和使用是一个难点,大家要认真体会。

您必须 登录 才能发表评论!