![孩子趣味学编程之Scratch篇](https://wfqqreader-1252317822.image.myqcloud.com/cover/624/25744624/b_25744624.jpg)
3.3 不停地舞蹈——无限次循环
在图3-1里,细心的你会注意到一个很特殊的循环——没有指定次数的循环(见图3-9)。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P58_5612.jpg?sign=1738830734-qG8ljuq7GNAsMn3ohPtvfChbjFcMgzco-0-723548eb9772ef321578985e0f9b5113)
图3-9 无限次循环
这个循环的特点是没有办法设定执行次数,循环的内容会一直执行下去。如果不通过程序设定,那么只有按下舞台区域绿旗旁边的红色按钮才会终止。
接下来我们通过点谁谁跳舞的舞蹈大会来了解无限次循环。
背景:游乐场(atom playground),聚会(party),音箱室(party room)
角色:Cassy Dance,Catherine Dance,D-Money Hip-hop
故事:三个小朋友都是舞蹈高手。每个人准备的舞蹈和舞台设计都不一样。他们都想第一个跳,争执不下。于是决定权交给了玩家。
玩法要求:
单击绿旗音乐响起。
玩家点谁谁就跳舞。
每个人跳舞的背景不同(见图3-10)。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P59_5643.jpg?sign=1738830734-ijvXng2U0kHqEFTY5O0UjjMApsnG6kvZ-0-0918095dea889bc4847e28348b69ae45)
图3-10 舞蹈大会
我们的故事中有三个背景,三个角色,在开始程序之前,我们需要先增加背景和角色。
背景可以从背景库中选择三个,只要你认为是合适跳舞的场地都没有问题。
增加角色时,特别注意从角色库的“舞蹈”分类中选取(见图3-11)。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P60_5661.jpg?sign=1738830734-oKbZC2aDWaOMAW60DdLn6qYJqM7hexKp-0-a7289a79ea7ad2ad03811ce4bf49283a)
图3-11 角色库“舞蹈”标签中的角色
这个标签中的角色与其他普通的角色有什么特殊之处呢?我们对比一下Cassy Dance和Maya(见图3-12)。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P60_5665.jpg?sign=1738830734-DPPr7hwKv0f0hOoknxzpucf2hBi2Pz5u-0-33b8623437cdbd6c3bf571729ec9d1fd)
图3-12 不同角色的造型
在工具箱的造型标签下,Cassy Dance有4个造型,而Maya只有1个造型。想一下,如果让角色的造型不停变化是什么效果?对于Maya来说,如果切换造型,那么结果没有变化,因为只有一个造型。但对于Cassy Dance就不同了,当你改变她的造型时,你会发现她在舞台上有了动作!
在Scratch中,有两个可以改变角色造型的命令(见图3-13)。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P61_5713.jpg?sign=1738830734-Am4kg1z2MKo2X8oeMgQOv4ic8y5s5kIL-0-3e826417f8777f080b34beb8051b401b)
图3-13 改变角色造型的命令
这个命令会将角色的造型切换为某一个固定的造型,这个固定的造型是由造型的名称决定的。
这个命令没有指定具体的造型,如果多次执行,那么角色会按顺序由上向下切换,当切换到最后一个造型后,再运行“下一个造型”,则造型会切换到第一个。
试一试
把Cassy Dance作为角色,用鼠标连续单击程序区域的下一个造型,Cassy Dance完成了什么动作呢?
Cassy Dance跳舞了!
下面我们来看一下如何用程序来让Cassy跳舞。
3.3.1 用程序让Cassy舞蹈
在前面的操作中,我们用连续单击“下一个造型”的方式,让Cassy跳舞,这相当于让角色连续运行“下一个造型”这个命令,在程序中,可以让这个命令循环执行。在Scratch中,具体程序如图3-14所示。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P62_5763.jpg?sign=1738830734-cJlPHB2r2b1LNOvAPJN2HQTgPCXFJFow-0-80dafe159be66dcd16baca093a5ec52f)
图3-14 疯狂的跳舞
试一试
在程序区域中写下这一段代码,然后单击,发现了什么?
Cassy像电影中的快放一样,不停快速舞蹈,以致你可能看不清人物的舞蹈动作!这和我们日常生活中看到的电影或动画片是不一样的!
为解决这个问题,我们先来看一下电影或动画的原理:你以前可能看过组成电影的实际胶片。从表面上看,它们像一堆画面串在一条塑料胶片上。每一个画面称为一帧,代表电影中的一个时间片段。这些帧的内容总比前一帧有微小变化,这样,当电影胶片在投影机上放映时就产生了运动的错觉:每一帧都很短并且很快被另一个帧所代替,这样就产生了运动。
有点复杂吧!简单地说,就是一幅幅图片在你眼前快速翻过,然后你会感觉图片中的人物动了起来。根据人眼的特点,当每秒有24帧以上的图片从你眼前翻过时,会产生连续感。如果太多了,那么人物动作会很快,眼睛就有点反应不过来了,就像你用上面的程序实现的舞蹈。
那么,我们怎么让Cassy的舞蹈动作慢下来呢?在程序命令区的“控制”标签中,第一个命令是“等待1秒”,我们可以把它加入程序中来看一下效果。怎么样?我们的舞蹈是否又变成了一个慢动作?但是它让Cassy的舞蹈慢了下来!
我们可以修改中圆圈里的“1”,例如变成0.1,那么你会发现舞蹈动作就合理了很多。
现在,程序变成了图3-15所示的样子。
在Scratch里,很多时候,我们可以通过这个命令来改变动作或快慢。
但需要解释的是,这个命令并不是让动作的执行变慢了,而是执行完了上一个命令,然后执行“等待0.1秒”这个命令,从程序的实现效果上看,让角色的动作变慢了。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P62_5770.jpg?sign=1738830734-9oBW7XM4aiGMb7UwD7vQyFRTVtDMid93-0-9acb0a85b445eaef1e62b962b2919332)
图3-15 合理的舞蹈
3.3.2 点谁谁跳舞以及背景切换
在这个跳舞的程序里,我们有两项特殊要求:
玩家点谁谁跳舞。
每个人跳舞的背景不同。
点谁谁跳舞,这句话实际上包含了两个动作:①鼠标单击角色;②角色跳舞。鼠标单击角色,在Scratch中可以有一个命令直接实现(在“事件”标签里),如图3-16所示。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P63_5819.jpg?sign=1738830734-JyDxWV5tveeq1nlvI8Zc0vAme3HzPWMw-0-4c2085fa80c853e0542cf309e5f3bb4a)
图3-16 “当角色被点击时”命令
需要注意的是,这个命令的顶上是个圆弧,下面是一个凸起,这意味着这个命令是程序运行的起点,顶上是没有办法连接命令的!
试一试
把这个命令拖到程序区域里,把图3-14的程序块连接到它的下方,然后单击角色看看发生了什么?
下面只需要增加切换背景的命令就可以了,这一功能我们在魔法钢琴中已经学过,这里就不再多说了。
最后,我们得到了一个角色跳舞的完整程序(见图3-17)。
![](https://epubservercos.yuewen.com/622E0F/14216368805639506/epubprivate/OEBPS/Images/Figure-P64_5848.jpg?sign=1738830734-xKhv06BkNmXBpGnoPl0H0XOjlWHMLB88-0-b030a6f55699bdb823601ad64591799b)
图3-17 角色舞蹈的完整程序