============= 以下是课本内容 =============
这个例子主要体现了Scratch能够通过声音进行交互,以及利用克隆功能,实现角色在程序运行时动态复制。声音交互用的是“侦测”分类中的“响度”指令模块,如图18-1所示。
图18-1 “响度”指令模块在“侦测”分类中
先要实现一只随音量(响度)改变大小的螃蟹,音量越大,螃蟹角色的个头越大。这个程序比较简单,这里我们只列出对应的指令模块,如图18-2所示。
图18-2 随响度改变大小的螃蟹角色的程序
这个程序在后面还要再调整,现在先来换一个背景。抓螃蟹的地方一定是沙滩,所以我们先将背景换成沙滩,如图18-3所示。
图18-3 选择背景
具体步骤是:(1)选择角色区旁边的“舞台”;(2)在模块区选择“背景”选项卡;(3)单击右下角图片按钮,从背景库中选择一个沙滩的背景,这里我选择的是“Jurassic”。接着我们就来完成程序。与之前不同的是,这里螃蟹是一直在移动的。这段程序完成之后如图18-4所示。
图18-4 螃蟹移动的程序
在“事件”分类中找到“当被点击”指令模块作为这段程序的起点,接着要设定一下螃蟹角色的运动形式,因为我们希望游戏中螃蟹能够满屏跑,所以要将角色面向的方向设定为91或92,然后将旋转模式设定为“左右翻转”。再往下就是重复执行“将大小设为响度”“移动10步”以及“碰到边缘就反弹”这3个指令模块。这段程序中,“面向91方向”“将旋转方式设为左右翻转”“移动10步”以及“碰到边缘就反弹”指令模块都在“代码”的“动作”分类中,而“重复执行”指令模块在“控制”分类中,“将大小设为100”指令模块在“外观”分类中,角色大小的参数“响度”指令模块在“侦测”分类中。在一只螃蟹的程序完成之后,我们通过“克隆自己”指令模块再复制几只螃蟹。“克隆自己”指令模块在模块区的“控制”分类中,克隆的同时,我们要让复制出来的螃蟹也满屏幕跑,所以将重复执行的那3个指令模块也复制给克隆体,完成后的程序如图18-5所示。
图18-5 使用“克隆自己”指令模块
我克隆了10只螃蟹,程序中是通过重复执行10次“克隆自己”来完成的。这两段程序块完成之后,运行效果如图18-6所示。
图18-6 程序运行效果
因为克隆出来的螃蟹会出现在螃蟹原来的位置上,所以就出现了图18-6所示的像排队一样的效果。这个游戏希望每只螃蟹能够出现在随机的位置,所以程序中要在克隆体启动时将克隆的螃蟹移动到一个随机的位置。修改之后的程序如图18-7所示。
图18-7 将克隆的螃蟹移动到随机位置的程序
说明:因为螃蟹的大小和音量相关,所以当程序运行时,我们要大声地说话才能看到“沙滩”上的螃蟹。修改后再运行程序的效果如图18-8所示。
图18-8 修改程序后的运行效果
再之后,就需要完成“抓”螃蟹的操作了。这是一群胆小的螃蟹,你必须大声说话把它们“吓”出来才能抓。这里先用鼠标完成这个交互环节,即当用鼠标单击一个螃蟹时,这个螃蟹就从屏幕上消失了。螃蟹角色上的程序修改之后如图18-9所示。
图18-9 修改后的螃蟹角色程序
这里先来看“重复执行”指令模块中的程序,在“碰到边缘就反弹”指令模块之后,我们加了两个嵌套在一起的选择结构,第一个选择的条件是如果“按下鼠标”;第二个选择的条件是如果“碰到鼠标指针”,即当按下鼠标时检测是否单击在了角色上,如果是,就让角色“隐藏”。最后因为可能会执行这个“隐藏”指令模块,所以我们在程序的最开始要加上一个“显示”指令模块,以保证开始运行程序时,角色是出现的。游戏的雏形我们已经能够看到了,再进行细化就需要了解一下规则了。这个游戏的规则是只有在一堆螃蟹当中选中角色才算成功,选中克隆体不算;刚开始时你有5次机会,每选中一个克隆体就减少一次机会(当然被选中的克隆体也会消失),玩家需要在5次机会之内选中角色。基于以上的规则,我们要建立一个变量,变量名为“机会”,如图18-10所示。
图18-10 建立“机会”变量
在“代码”的“变量”分类中单击“建立一个变量”按钮,在弹出的对话框中输入变量名“机会”,就会出现图18-10所示的界面。下面这一步就是要完善两个程序(角色的程序和克隆体的程序),这里先把完善后的内容贴出来(见图18-11),然后再对照图片解释一下。
图18-11 角色的程序(左)和克隆体的程序(右)
具体修改或添加的内容如下。(1)在程序开始时将“机会”变量的值设定为5,表示有5次机会。(2)将角色“隐藏”的部分修改一下,因为鼠标指针选中角色就表示抓取成功了,所以这里就直接让角色说一句“眼神真好”,然后停止运行程序。(3)在判断鼠标是否被按下之后,增加一个对“机会”的值的判断,如果“机会”的值小于0,说明玩家5次还没有抓到螃蟹,那么让螃蟹说一句“小蟹不是那么好找的,不服再来”,然后停止运行程序。判断“机会”的值是否小于0的指令模块在“运算”分类中。(4)将判断鼠标指针是否选中自己的选择结构(两个嵌套在一起的选择结构)复制到克隆体程序的“重复执行”指令模块中。不同的是,如果此时鼠标指针选中的是克隆体,将“机会”的值减1,因为指令模块的功能是“将变量增加××”,所以这里写成“将机会增加-1”,接着说一句“抓错了,讨厌”,最后删除当前选中的克隆体。程序完成后,就可以玩游戏了,当我们抓错对象时,效果如图18-12所示(不要忘了先大声说话让螃蟹从沙滩里“跑”出来)。
图18-12 抓到克隆体的效果
现在整个游戏的功能都完成了,不过在玩的时候总是觉得只显示鼠标指针有点突兀,应该用一个夹子之类的角色来抓螃蟹。我在角色库里翻了一遍,没找到特别合适的夹子角色,最后选了一个魔术棒角色“wand”来玩这个抓螃蟹的游戏。魔术棒的程序很简单,只要跟着鼠标指针移动就好了,具体程序如图18-13所示。
图18-13 魔术棒角色的程序
另外这里要说明一下,为了保证魔术棒的前端刚好在鼠标指针单击的位置,我们需要在造型当中调整一下这个角色。在角色的造型视图中,角色图片信息的正中间有一个小十字,它的中心就是鼠标指针尖端对应的点,调整一下角色角度和方向,最后确定魔术棒的样子如图18-14所示。完成之后的游戏效果如图18-15所示,我们一起来抓螃蟹吧。
图18-14 调整魔术棒的角度和方向
图18-15 程序运行效果
本节知识点:
1. 学习使用“响度”指令模块。
2. 学会使用克隆功能。
扩展练习:
1. 让螃蟹只能在沙滩区域出现和活动。
2. 加入背景音乐或音效。
发表评论 取消回复