孩子趣味学编程之Scratch篇
上QQ阅读APP看书,第一时间看更新

3.3 不停地舞蹈——无限次循环

在图3-1里,细心的你会注意到一个很特殊的循环——没有指定次数的循环(见图3-9)。

图3-9 无限次循环

这个循环的特点是没有办法设定执行次数,循环的内容会一直执行下去。如果不通过程序设定,那么只有按下舞台区域绿旗旁边的红色按钮才会终止。

接下来我们通过点谁谁跳舞的舞蹈大会来了解无限次循环。

背景:游乐场(atom playground),聚会(party),音箱室(party room)

角色:Cassy Dance,Catherine Dance,D-Money Hip-hop

故事:三个小朋友都是舞蹈高手。每个人准备的舞蹈和舞台设计都不一样。他们都想第一个跳,争执不下。于是决定权交给了玩家。

玩法要求:

单击绿旗音乐响起。

玩家点谁谁就跳舞。

每个人跳舞的背景不同(见图3-10)。

图3-10 舞蹈大会

我们的故事中有三个背景,三个角色,在开始程序之前,我们需要先增加背景和角色。

背景可以从背景库中选择三个,只要你认为是合适跳舞的场地都没有问题。

增加角色时,特别注意从角色库的“舞蹈”分类中选取(见图3-11)。

图3-11 角色库“舞蹈”标签中的角色

这个标签中的角色与其他普通的角色有什么特殊之处呢?我们对比一下Cassy Dance和Maya(见图3-12)。

图3-12 不同角色的造型

在工具箱的造型标签下,Cassy Dance有4个造型,而Maya只有1个造型。想一下,如果让角色的造型不停变化是什么效果?对于Maya来说,如果切换造型,那么结果没有变化,因为只有一个造型。但对于Cassy Dance就不同了,当你改变她的造型时,你会发现她在舞台上有了动作!

在Scratch中,有两个可以改变角色造型的命令(见图3-13)。

图3-13 改变角色造型的命令

这个命令会将角色的造型切换为某一个固定的造型,这个固定的造型是由造型的名称决定的。

这个命令没有指定具体的造型,如果多次执行,那么角色会按顺序由上向下切换,当切换到最后一个造型后,再运行“下一个造型”,则造型会切换到第一个。

试一试

把Cassy Dance作为角色,用鼠标连续单击程序区域的下一个造型,Cassy Dance完成了什么动作呢?

Cassy Dance跳舞了!

下面我们来看一下如何用程序来让Cassy跳舞。

3.3.1 用程序让Cassy舞蹈

在前面的操作中,我们用连续单击“下一个造型”的方式,让Cassy跳舞,这相当于让角色连续运行“下一个造型”这个命令,在程序中,可以让这个命令循环执行。在Scratch中,具体程序如图3-14所示。

图3-14 疯狂的跳舞

试一试

在程序区域中写下这一段代码,然后单击,发现了什么?

Cassy像电影中的快放一样,不停快速舞蹈,以致你可能看不清人物的舞蹈动作!这和我们日常生活中看到的电影或动画片是不一样的!

为解决这个问题,我们先来看一下电影或动画的原理:你以前可能看过组成电影的实际胶片。从表面上看,它们像一堆画面串在一条塑料胶片上。每一个画面称为一帧,代表电影中的一个时间片段。这些帧的内容总比前一帧有微小变化,这样,当电影胶片在投影机上放映时就产生了运动的错觉:每一帧都很短并且很快被另一个帧所代替,这样就产生了运动。

有点复杂吧!简单地说,就是一幅幅图片在你眼前快速翻过,然后你会感觉图片中的人物动了起来。根据人眼的特点,当每秒有24帧以上的图片从你眼前翻过时,会产生连续感。如果太多了,那么人物动作会很快,眼睛就有点反应不过来了,就像你用上面的程序实现的舞蹈。

那么,我们怎么让Cassy的舞蹈动作慢下来呢?在程序命令区的“控制”标签中,第一个命令是“等待1秒”,我们可以把它加入程序中来看一下效果。怎么样?我们的舞蹈是否又变成了一个慢动作?但是它让Cassy的舞蹈慢了下来!

我们可以修改中圆圈里的“1”,例如变成0.1,那么你会发现舞蹈动作就合理了很多。

现在,程序变成了图3-15所示的样子。

在Scratch里,很多时候,我们可以通过这个命令来改变动作或快慢。

但需要解释的是,这个命令并不是让动作的执行变慢了,而是执行完了上一个命令,然后执行“等待0.1秒”这个命令,从程序的实现效果上看,让角色的动作变慢了。

图3-15 合理的舞蹈

3.3.2 点谁谁跳舞以及背景切换

在这个跳舞的程序里,我们有两项特殊要求:


玩家点谁谁跳舞。

每个人跳舞的背景不同。


点谁谁跳舞,这句话实际上包含了两个动作:①鼠标单击角色;②角色跳舞。鼠标单击角色,在Scratch中可以有一个命令直接实现(在“事件”标签里),如图3-16所示。

图3-16 “当角色被点击时”命令

需要注意的是,这个命令的顶上是个圆弧,下面是一个凸起,这意味着这个命令是程序运行的起点,顶上是没有办法连接命令的!

试一试

把这个命令拖到程序区域里,把图3-14的程序块连接到它的下方,然后单击角色看看发生了什么?

下面只需要增加切换背景的命令就可以了,这一功能我们在魔法钢琴中已经学过,这里就不再多说了。

最后,我们得到了一个角色跳舞的完整程序(见图3-17)。

图3-17 角色舞蹈的完整程序