- 少儿计算思维养成记:六个孩子的编程学习笔记
- 包若宁等编著
- 1153字
- 2025-02-23 14:12:08
二、动手练:阅兵方阵列队行进
(一)实验目的
让小猫排成一个阅兵方阵,并且列队行进。
(二)基本思路
我们首先创建一个小猫角色,名字叫Sprite1,然后让这个小猫生成多个克隆体。比如方阵有3行2列,我们就生成6个克隆体,加上原始角色Sprite1,我们会看到一共有7只小猫。
在用克隆技术时,我们要注意下面几点:
1)创建克隆体时使用的是“克隆自己”积木块(在“控制”类里)。
2)当克隆体刚刚生成时,跟原角色是一模一样的,当然了,后面克隆体可以改变自己的状态。这里,我们让角色每走到一个位置就克隆一次,这样克隆的初始位置就有了。
3)克隆体执行哪段脚本呢?我们把克隆体要执行的脚本前面加上“当作为克隆体启动时”积木(在“控制”类中),就是图5-2中显示的这个。

图5-2 “当作为克隆体启动时”积木
提醒一下:原始角色Sprite1的脚本前面是“当被点击”(在“事件”类),可不要弄混了啊!
(三)编程步骤
(1)角色设计
只有一个角色小猫,名字叫Sprite1。
(2)变量设计
跟上一讲一样,我们设置两个变量“几行”和“几列”,表示阅兵方阵的行数和列数;此外,我们还要新增加两个变量“我的x坐标”“我的y坐标”。不过建立这两个变量时一定要选择“仅适用于当前角色”,否则所有克隆体的“我的x
坐标”变量都是同样的值,“我的y
坐标”变量也都是同样的值。
(3)过程描述与代码展示
我们让小猫从第一行的第一列开始,逐个去站位,每隔50步站一只;站满了一队就换下一队,再从头开始。不过站位时是“克隆”一个自己(见图5-3中左侧部分)。

图5-3 用克隆技术实现的阅兵方阵脚本(左)及实验结果(右)
(四)实验结果
现在点击绿旗,输入行数和列数,你就会看到小猫排好方阵,然后每秒走一次了(见图5-2中右侧部分)。
注意,这六个克隆体的脚本相同,但是起始位置是各不相同的;每个克隆体的起始位置是创建克隆体时角色的位置。
(五)遇到的bug及改正过程
bug:今天我遇到一件奇怪的事情,一开始程序运行得好好的,突然再运行时小猫都不出现了。程序没做任何改动啊,真奇怪!
改正:我查了半天,才发现一个低级错误——我不小心按到了角色区的显示开关上,关闭了小猫的显示。怪不得呢!重新打开显示开关就好了。
(六)思考与延伸
我觉得克隆最大的好处就是避免了对每个角色重复编写相同的脚本。
克隆很有用,但是也不能无限制地生成克隆体。当克隆体达到一定数量的时候,Scratch就会停止克隆。
我们可以自己测试一下,比如新建一个变量,将变量的初始值设置为0,每克隆一个就增加1,最后就可以看到最终的克隆体个数了。我试了一下,克隆到300个左右就无法继续下去了。这是因为克隆体越多,需要的内存也越多,短时间内大量增加克隆体会导致计算机内存消耗极大,容易卡死。
那么,在使用克隆功能的过程中要如何解决这个问题呢?Scratch提供了一个“删除此克隆体”的积木(在“控制”类中),在用完克隆体后要及时删除。