最新消息:

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

Scratch 少儿编程 3278浏览 0评论

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

我们的前一个实战例子是《小白兔捡萝卜》游戏,我们的编码逻辑是:当一个萝卜消失时,它再从舞台顶部出现。

这种玩法有些太简单了,而且和平时我们遇到的类似游戏不符,所以,在最后我们留了一个作业:

如果同一时间允许多个萝卜从天而降,出现在舞台上,代码应该怎样修改?

这次我们就来完成这个需求,然后,再增加一些其他的优化。

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

00 软件分析

优化内容:

  1. 在之前编写的《小白兔捡萝卜》程序基础上改编
  2. 每隔一段时间舞台顶部落下一个萝卜,而不需要等待前一个消失
  3. 给萝卜增加造型,是游戏更美观
  4. 游戏开始时,增加玩法说明

01 回顾第一版程序

点击Scratch主界面左上角的“文件->打开”,找到之前编写的《小白兔捡萝卜》程序。

02 增加造型

我为大家准备了萝卜新造型,造型素材放在云盘中,下载和使用方法如下:

 

请在浏览器中输入如下网盘地址,在网盘中找到“radish.svg”,并下载到你的电脑硬盘任意文件夹中。
https://dwz.cn/POaaxyMU

 

假设你已经把造型文件下载好了。我们来演示给萝卜角色添加造型。

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

02 萝卜满天飞

要实现需求“同一时间允许多个萝卜从天而降,出现在舞台上”,其实,有多个方法。最容易想到、也是最简单的办法就是复制多个萝卜角色和多份相同的萝卜积木代码。如下图,

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

可是,这种做法太简单、粗暴了,一个程序里出现很多重复的东西。编码变得没了美感。一个真正的程序员是不会愿意这样做的~~

那么,我们可以使用另一种方式“克隆”。

克隆积木,都在控制类积木里,参见《Scratch工具介绍:控制类积木》。

1. 首先,我们编写角色作为克隆体启动的逻辑。

主要就是将萝卜原来“出现–下落–被捡到–消失”等的逻辑放到克隆体里。下面是我们编写中的代码,还没完工,老代码没删除是为了对比理解。

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

尤其需要注意的是,碰到舞台底部和碰到兔子时,角色不再是“隐藏、然后显示在顶部”,而是“删除克隆体”。

另外,因为“随机显示在顶部”的逻辑只在克隆体代码中用到,所以,其实可以把这个逻辑写到对应位置,而不再使用自定义积木 [随机显示在顶部]

 

2. 然后,编写创建克隆体的逻辑。

我们可以控制随机几秒,或随机零点几秒产生一个萝卜。下面的演示的是随机0.1~1秒产生一个萝卜。你可以修改这里的逻辑来控制萝卜出现的频率,从而控制游戏的难度。

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

3. 最后,每次落下的萝卜切换造型。

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

注意:

[下一个造型]积木是放在 [克隆 自己 ] 前后的,如果放在 (当作为克隆体启动时] 代码块里,将看不到造型切换的效果。这是因为“克隆”的源头是一样的,所以,“下一个造型”也是恒定的。

如果一定要在 (当作为克隆体启动时] 代码块里切换造型,可以使用 [将造型切换为___],并指定要切换的造型名称或编号,就像下面这样处理,

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

03 增加玩法说明角色

根据上文,从云盘中下载我为大家准备的“玩法说明”造型,文件名是“兔子捡萝卜玩法指导.png”。

 

有人可能已经想到,在Scratch中可以自己“绘制新角色”,然后输入这些“玩法说明”文字做成造型。这是一个非常棒的想法!只是遗憾的是,Scratch 2.0的绘图工具不支持输入中文,所以,我才会为大家准备这个造型文件。据说,Scratch 3.0就会支持中文了。

1. 首先,添加“玩法说明”角色,调整位置和大小。

查看之前的讲解,不再演示。

“玩法说明”只需在游戏开始时显示,持续3到5秒钟后消失即可。由此突然想到,要么再添加一个倒计时显示吧……所以,暂时不对“玩法说明”编码。

2. 接着,添加数字角色,调整位置和大小。

我暂时打算倒计时3秒,下面演示下,我们使用角色库中有数字,它们在“字母”分类里。

  • 先通过添加数字3,创建角色,修改角色名,调整位置。

    Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

  • 添加数字2、1造型,并调整造型的顺序,使它们按照3、2、1排序。

    Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

04 给玩法说明、倒计时编码

先给倒计时角色编码,再给玩法说明编码。

注意,上下对比理解这样做的目的。

倒计时编码:

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

玩法说明编码:

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

 

05 修改兔子、萝卜的代码

根据以上的修改,兔子和萝卜角色的起始逻辑就不能从点击旗子开始了,而应该是等待接收“广播”,即, (接收到 开始 ]

所以,兔子的代码改成,

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

然后,萝卜也一样修改。

 

06 试运行,出错了!

能想到的地方都已经改好了,我们运行一下吧。

捡萝卜……捡萝卜……捡胡萝卜……捡白萝卜……等等!怎么得分一直是0,没有增加?!

 

排查原因中……一段漫长的时间,过程就不细说了。

原因是,原来在上一个版本中“分数”变量被我们定义成了“仅适用于当前角色”,在使用“克隆”时,克隆积木体中没能成功修改变量的值。具体为什么会这样,我不清楚,猜测可能Scratch 2.0本身存在bug~

 

于是,我们重新定义一个“适用于所有角色”的新的分值(score),问题就解决了。不要忘了,定义新变量后,要修改积木中所有用到老变量(分数)的地方。

Scratch实例6|小白兔捡萝卜,第2版“满天的萝卜”(使用克隆积木改造程序)

 

07 完工!运行程序

至此,我们完成了“需求说明”中的全部内容。
点击舞台右上角的小旗子运行程序,看看效果吧。

 

 附加练习
  • 接到胡萝卜得1分、白萝卜得2分

  • 玩法说明内容太多,3秒钟看不完,把倒计时改成5秒

  • 修改萝卜出现的频率,用以调整游戏难度

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