经过Scratch的基础学习之后,大家肯定都已经跃跃欲试了。下面我们通过3个小游戏的学习来进一步掌握Scratch的更多知识。
在这个游戏中,我们将会学习一些新的概念,比如使用计时器、导入舞台背景和新的角色、如何在变量中存储时间和距离等数据、使用乘法等一系列新的功能。
这个游戏是树莓派的一个官方案例(官方文档地址为rpf.io/astronaut-game),旨在纪念有史以来的第一次,来自欧洲航天局的英国宇航员蒂姆皮克在国际空间站上生活和工作半年之久。我们这个小程序会记录当宇航员反应过来的时候,空间站已经移动了多远。
在开始之前,我们先保存之前的劳动成果,单击“文件”和“保存项目”为其命名。然后选择“文件→新建项目”新建项目,并通过保存项目,将新项目命名为AstronautReactionTimer。
首先我们需要准备两个图像,一张是舞台背景,也就是广袤无垠的宇宙空间;还有一张是我们可爱的宇航员,这是我们新的主角。这两张图片都在网上,地址分别为rpf.io/astronaut-backdrop和rpf.io/astronaut-sprite,我们可以在树莓派上打开在第1章安装的Firefox浏览器,输入上述地址之后,在图片上右击,选择Save Image As ...选项,即可将图片保存到本地,如图2-14所示。
图2-14 Firefox浏览器保存图片
首先在角色面板右击原来的小猫角色,选择“删除”选项将其删除。然后来到舞台面板,单击“从本地文件中上传背景”图标,是一个文件夹的图样,在下载文件夹中选择刚刚下载的Space-background.png图片,单击“确定”按钮,舞台背景就会成为一片广袤无垠的宇宙,如图2-15所示,而且右侧会自动切换成“背景”选项卡,可以对图片进行一定的修改和润色,当然我们这里并不需要。
图2-15 上传背景图片
我们来到角色面板,单击面板右上侧的“从本地文件中上传角色”图标,也是一个文件夹的图案,同样选择刚刚下载的Astronaut-Tim.png文件,单击“确定”按钮之后,我们的新角色——Tim就出现在舞台上了。有些情况下,Tim并不在舞台中央,我们可以在舞台上拖曳他自由移动。
现在舞台和角色都准备好了,可以开始编写程序了。我们选择“数据”控制集,选择“新建变量”,变量名输入“time”,勾选“适用于所有角色”。现在可以单击我们的角色了,在舞台或者角色面板都可以,以选中角色,然后到“事件”控制集中拖曳“当旗帜被单击时”到右侧脚本区域,再给Tim增加一个问候,从“外观”事件集中拖曳“说Hello!2秒”到当前色块的下方,再去“控制”中拖曳“等待1秒”,然后拖曳“说Hello!”,接着去“侦测”事件集中拖曳“计时器归零”到当前色块下方,并且修改角色说话的内容,最终效果如图2-16所示。
图2-16 更改说话的内容
这里我们添加的计时器归零操作是用来控制Scratch内部的计时器的,用来将其归零。我们继续添加控制色块,到“控制”里拖曳“在XX之前一直等待”到右侧当前色块下方,到“侦测”里拖曳“按键空格键是否按下?”到右侧“在XX之前一直等待”色块内部的菱形空格中,如图2-17所示。
图2-17 增加计时器
接下来我们加快速度,毕竟这些色块拖曳的知识,经过这么多次训练,应该很熟练了才对。接下来我们学习“连接”功能,位于“数字和逻辑运算”控制集中,可以将字符串连接起来。其余操作都是我们学过的知识,最终效果如图2-18所示。
图2-18 连接
然后设置time变量的值为Scratch内置变量“计时器”的值,新建一个distance变量,将其值设定为time变量乘以7,乘法也在“数字和逻辑运算”里面。为什么要乘以7呢?因为宇宙空间站每秒钟会移动7公里,如图2-19所示。
图2-19 计算距离
最后我们学习四舍五入的功能,猜猜这个功能会在哪个控制集里面呢?完成效果如图2-20所示。
图2-20 四舍五入
这样我们的小游戏就完工了。快点单击旗帜开始运行游戏吧!当Tim说出Hit Space的时候,立刻按下空格键,Tim会告诉我们反应时间是多少,以及在这个时间内空间站移动了多少千米,如图2-21所示。
图2-21 完成效果
不做不知道,一做吓一跳,原来反应稍微慢点,空间站就会移动那么远的距离呢!
为了庆祝2016年里约热内卢奥运会,我们一起动手写一个花样游泳的小游戏,同时通过本游戏的编写,来一起学习Scratch的循环和克隆等功能,而且我们还会学习使用键盘上的←和→来控制游泳的舞姿,是不是很有趣?
这个项目中还会使用到声音,有条件的同学最好给树莓派配一个耳机,这样互动感会更好。这个项目依旧是树莓派的一个官方项目,官方链接为rpf.io/synchro-swimming。打开这个链接,单击绿色旗帜,就可以直接游玩啦!有生动的音乐、←和→控制舞姿方向、↑和↓控制角色之间的距离,非常好玩,如图2-22所示。
图2-22 最终效果
前面提到了,Scratch 3是一款在线版本,其实这个花样游泳游戏也属于在线的Scratch 3的官方案例,打开网址:https://scratch.mit.edu/projects/113149575/editor/,就可以立刻拥有完整的编程环境和已经编写好的Scratch工程,单击绿色旗帜就可以直接游玩了。由于是在浏览器中打开的,因此直接就有音乐,如图2-23所示。
图2-23 网站效果
既然提到了在线的Scratch 3,就不得不提它的一些在线资源,Scratch 3的在线资源非常丰富,我们可以在其官网上看到一系列基于“动画”“游戏”“交互式艺术”“音乐与舞蹈”等主题的项目,可以说,官网就是一个大宝藏,如图2-24所示。
好了,接下来进入主题。
(1)保存我们上一个项目,单击“文件→保存项目”。
(2)单击“文件→新建项目”,命名为SynchronisedSwimming.sb2。
(3)在舞台面板单击新建背景下的“绘制新背景”,右侧出现“背景”选项卡。
(4)单击调色板中的水蓝色,然后选择涂料桶样式的填充功能,单击白色背景,如图2-25所示。
(5)在角色面板中右击原来的角色,选择“删除”选项。
(6)在“新建角色”中选择“从角色库中选择角色”选项。
(7)将“分类”切换到“动物”,选择Cat1 Flying,单击“确定”按钮。
图2-24 网站资源丰富
图2-25 准备工作
(8)从“事件”中拖曳两个“当按下空格键”到脚本面板,分别将“空格键”改成“左移键”和“右移键”。
(9)从“动作”中分别拖曳“向左旋转15度”和“向右旋转15度”到“左移键”和“右移键”的下方,如图2-26所示。
图2-26 操作过程
现在已经可以按←或→键测试我们的角色了,角色会按照向左或者向右的指示来“跳舞”,匹配你在键盘上选择的方向。这次不需要单击绿色的旗帜启动了,因为没有使用那个控制色块,所以可以即时触发,随时进行调试。我们再来给向上键和向下键赋予动作,这一步大家可以自行完成,最终效果如图2-27所示。
图2-27 操作过程
现在我们的角色还有一个小小的“缺陷”,那就是按向右的时候,确实是“向着右前游泳”的,当按下“向左”的时候,却是“倒退游泳”的,这不符合现实规律,现实肯定是转个身,继续向左前方游。所以要制作一个转身的动作,才更加符合视觉习惯。
(10)在角色面板里单击我们的角色,在右侧控制集面板上方将选项卡切换至“造型”。
(11)单击cat1 flying-a,然后单击右上角的删除形状,将其删除,这样就只剩下cat1 flying-b了。
(12)在右上方的文字框中将cat1 flying-b重命名为right,按回车键生效。
(13)在角色身上右击,选择“复制”选项,下方会出现一个right 2,同样的方法,将其重命名为left。
(14)然后在重命名文本框的右侧,单击“左右翻转”按钮(见图2-28红框框住的部分),使其向左。
这样我们就有了向左和向右两个版本,可以在两种情况下自由切换,如图2-28所示。
图2-28 操作过程
(15)接下来将“外观”下的“将造型切换为left”拖曳到右侧的“当按下”和“向左旋转”的中间。
(16)把“将造型切换为right”拖曳到右侧的“当按下”和“向右旋转”中间,如图2-29所示。
图2-29 操作过程
然后可以尝试按下键盘上的←或→,可以看到角色成功转身,以符合大家习惯的姿态进行游泳。
对于奥林匹克花样游泳来说,选手们出场时要求在舞台的特定位置,哪怕选手众多,舞台上的位置也不能乱,所以我们需要一种精准控制舞台位置的色块。可以选择“动作”控制集下的“移到X:Y:”和“面向90方向”。当单击绿色旗帜时,选手在指定位置开始表演,如图2-30所示。
图2-30 操作过程
最后,我们的选手肯定不可能只有一位,一般会有6位,我们需要“克隆”出6位选手出来,在“控制”中选择“重复执行10次”和“克隆自己”,在“动作”中选择“向右旋转60度”,分别拖曳到如图2-31所示的位置,并修改合适的参数。
图2-31 操作过程
为什么是60度呢?因为一个圈是360度,6个角色就是60度。到这里,我们的基本功能就塑造完成了。大家可以单击绿色旗帜开始,按键盘上的上下左右键来玩这个游戏。
是不是觉得还缺少什么?对了,音乐。玩游戏怎么能没有伴奏音乐呢?时而紧张刺激、时而轻松愉悦的音乐才是游戏的灵魂。这里我们为花式游泳运动健儿们添加一段旋律优美的因为吧!
(17)单击中部上方的“声音”选项卡,从声音库中选取音乐。
(18)选择循环音乐里的dance around。
(19)到“声音”控制集中选择“播放声音dance around直到播放完毕”,最终效果如图2-32和图2-33所示。
图2-32 选择dance around
图2-33 操作过程
这样单击绿色旗帜时,音乐就会开始播放,并且由于循环功能的存在,音乐会不断重复。想要停止音乐时,按下舞台上方绿色旗帜旁边的红色八角形即可。
当然,现在这个游戏已经成型,单击绿色旗帜就可以开始玩了。这个游戏音乐动听,休闲益智,但是我们还可以做一点改进,比如增加一个自动跳舞的桥段,当我们按下空格键的时候,6只小猫选手为我们自动来一段舞蹈,这样还蛮有意思的。最终编写的代码如图2-34所示。
图2-34 最终代码
单击绿色旗帜开始游戏后,当按下空格键时,6只小猫伴随着音乐翩翩起舞,时而分开、时而聚拢,让人感觉轻松愉悦。
思考题:为什么小猫们会时而分开、时而聚拢呢?
最后不要忘记保存项目,不保存的话,我们辛辛苦苦编写的代码就丢失了。
想要学习更多Scratch编程的知识,可以去Scratch 3的官网查看更多案例,也可以在百度搜索Scratch,现在很多网站都推出了案例。