中级篇——数一数
疑惑篇
点击绿旗按钮开始游戏,屏幕上显示随机数量的物体,小猫提问有多少物体,玩家选择正确数字。
【线索篇】
案例分析
它们发生的场景是什么?
每个场景中有哪些角色?
每个场景中的每个角色在做什么?
- 点击绿旗按钮,循环播放背景音乐。舞台上方显示出数量不定的某种物体,玩家可拖动舞台上的物体。
- 小猫向玩家提问:舞台上物体的数量是多少?
- 舞台下方出现三个不同的数字,其中一个为物体的数量。
- 玩家选择其中一个数字。如果玩家选择的数字不等于物体的数量,播放错误音效,被选中的数字左右摇摆几次。如果玩家选择的数字等于物体的数量,播放正确音效,数字跳跃一次。接着,物体和数字消失,重复前三步。
积木提示
注意事项
- 作品中有几个角色?
- 小猫如何知道显示在舞台上物体的数量单位和名字?
- 如何判断玩家选择的数字是否正确?
【解决篇】
这是一个很简单的识数的小游戏,舞台上不停出现1~10个不同的物体,由玩家数一数具体的物体的数量后,选择正确的答案。通过该游戏可以帮助学龄前的小朋友认识数字。
第一步,还是把用到的背景Blue Sky添加进来。
第二步,添加角色。
在这里,需要你停下来思考一下,案例中具体需要多少个角色?
小猫肯定需要。
舞台上方不同的物体呢?虽然物体的种类很多,但是你可以把它们看成是同一个角色的不同造型,再通过克隆就能生成多个物体。
在造型编辑界面,通过“选择一个造型”按钮,就能为一个角色添加不同的造型。
最后还剩下舞台下方的数字,它们是多个角色还是一个角色?
与物体一样,你只需要一个角色,添加多个数字造型即可。需要注意的是,Scratch默认的数字造型只有0~9十个数字,没有数字10。你可以先选择造型1或者造型0,接着利用绘制工具中的复制和粘贴工具,将另外一个数字复制粘贴过来,合在一起组成10。
第三步,使用指令积木实现程序。
1. 点击绿旗按钮,循环播放背景音乐。舞台上方显示出数量不定的某种物体,玩家可拖动舞台上的物体。
首先,点击绿旗按钮后,舞台循环播放背景音乐。使用将音量设为(100)%积木可以调整音量大小,最大值100,最小值0。
数字角色点击绿旗后先隐藏起来。
舞台上出现一个随机数量的物体。这里的物体有两样东西是随机的,物体的造型和物体的数量。
当绿旗被点击后,先将它隐藏起来,再使用将拖动模式设为[可拖动]积木让玩家可以随意拖动物体。
接着,利用在(1)和(10)之间取随机数积木获取角色的随机造型编号,随机数范围是1至该角色的造型总数,例如案例中我使用了10个不同的造型,随机数范围就是1~10。
接着,再利用在(1)和(10)之间取随机数积木获得物体的随机数量,将它作为重复执行(10)次积木的参数,配合克隆[自己]积木生成多个物体。
当作为克隆体启动时,可以利用移到x:(0) y:(0)积木和在(1)和(10)之间取随机数积木将它的位置限制在舞台上方区域,最后再将它显示出来。
多次点击绿旗按钮进行测试,舞台上已经可以显示随机数量的不同物体。
2. 小猫向玩家提问,舞台上物体的数量是多少?
为了保证小猫是在物体显示之后才开始提问,需要让物体克隆自己完成后,发送一条消息通知小猫。
小猫在接收到消息后,利用说(你好!)(2)秒积木像玩家提问。
在这里有一个需要注意的地方,小猫每次提问时可以正确说出当前物体的数量单位和名称。例如,如果物体是苹果,小猫会说“数一数,屏幕上有几个苹果?”;如果物体是蝴蝶,小猫会说“数一数,屏幕上有几只蝴蝶?”;如果物体是巴士,小猫会说“数一数,屏幕上有几辆巴士?”。这要如何做到?
角色的每个造型都会有一个名称,将造型名称改为物体的数量单位+名称。
使用([舞台])的[背景编号]积木就可以获取到物体当前造型名称,再使用连接(苹果 )和(香蕉)积木将其他文字与造型名称拼接起来作为说(你好!)(2)秒积木的参数即可。
3. 舞台下方出现三个不同的数字,其中一个为物体的数量。
为保证舞台下方会出现的数字选项是在小猫提问完后出现,同样在小猫说完话后给数字发送一条消息。
数字角色在接收到该消息后准备显示出来。在这里你首先会遇到一个问题,三个选择中有一个是正确的物体数量,你如何知道正确的数量是多少?是不是和消灭虫子一样,又需要一个人来帮忙数一数舞台上有多少物体了。
建立一个变量“物体数量”。
想一想物体数量是在什么时候确定的?是不是最开始克隆物体时生成的随机数。
有了这个变量值,你就知道了正确的数字。
当你在添加数字角色造型时,需要将数字与造型编号一一对应起来。这样一来,你只要将该变量作为换成([造型1])造型积木的参数使用,就能将角色切换为正确的数字造型。
有了正确的数字造型,你还需要两个错误的数字作为选项。你可以选择与正确数字相邻的造型。
或者选择一个随机造型。选择随机造型时会有一个问题,要避免造型重复。因此,你需要对获取的随机数做判断,如果重复了就重新获取。
有了三个造型,你还要确定它们放置的顺序(左中右)。如果正确答案每次都出现在相同位置,玩家试过几次之后就可以不用数数,直接选择固定位置的数字。
为了避免这种情况发生,你可以使用在(1)和(10)之间取随机数积木获得正确答案的随机位置,剩下的两个位置用来放置错误选项。
新建一个变量“正确答案位置”,将其设置为1~3间的随机数,1、2、3分别代表左中右三个位置。
接着,提前确定好左中右三个位置的坐标值。利用如果<>那么积木对正确答案位置进行判断,分别将角色移动到各自的位置,切换成对应的数字造型,最后使用克隆[自己]积木生成克隆体。
观察上图中的指令串,看看你能不能看懂我是如何设置三个数字选项?
最后,当作为克隆体启动时将角色显示出来。
4. 玩家选择其中一个数字。如果玩家选择的数字不等于物体的数量,播放错误音效,被选中的数字左右摇摆几次。如果玩家选择的数字等于物体的数量,播放正确音效,数字跳跃一次。接着,物体和数字消失,重复前三步。
玩家点击其中一个数字,通过该数字的造型和物体数量的变量值进行对比,判断玩家是否选择正确。如果物体数量=数字的造型编号,说明选择正确;否则选择错误。
选择错误,播放错误音效,同时该数字左右摇摆几次。
选择正确,播放正确音效,同时该数字跳跃一次。
最后,物体和数字消失,重复前三步操作。
如何重新出题?是不是只需要重新执行一遍物体当绿旗被点击后面的指令串。区别是这一次不是点击绿旗后开始执行,而是玩家选择正确的选项后,由数字角色发送消息,通知物体角色重新出题。
物体接收到“出题”的消息后,将之前出题的指令重新执行一遍。
注意观察当绿旗被点击积木后面的部分指令与当接收到[消息1]积木后面的指令一模一样,你可以将当绿旗被点击积木后面的部分指令使用广播[出题]消息代替,减少了重复的指令。
这样做有两个好处,一是指令变少之后看上去更简洁,指令串的功能更明确。二是当重复的指令串需要做改变时,只用修改一处,避免了多处修改时,因为遗漏某处造成的bug。当你在高级篇中学习自制积木后,将会经常将重复的指令串汇总在一处。
点击绿旗按钮进行测试,你会发现一个bug。在第一次正确出题并且回答后,原有的物体和数字选项并没有消失,而是在它们基础上增加了新的物体和数字选项。这是因为当数字发送消息后,并没有删除原有的物体和数字角色的克隆体。如何解决这个bug?
很简单,数字广播“出题”消息后,物体和数字角色分别在接收到该消息时,使用删除此克隆体积木将原有的克隆体删除。
这里需要注意的是,当物体(原始角色和克隆体)接收到“出题”消息后,会并行执行两个指令串,一个用来删除原有克隆体,一个用来生成新的克隆体。在两个指令串并行执行的过程中,可能会出现一个新问题。如果生成新的克隆体执行在前,删除原有克隆体执行在后,原有的克隆体未被删除,也会接收到“出题”消息,生成新的克隆体,此时舞台上会出现多种不同的物体。
为了解决这个问题,可以在生成新克隆体之前,等待很短的时间,以保证删除此克隆体积木先被执行,只剩下原始角色可以重新生成新克隆体。
点击绿旗按钮进行测试,程序已经可以正常运行。接下来,你还可以为游戏增加游戏时长和计分器,看看在规定时间内谁答对的次数最多。为了避免玩家随便乱选,你还可以限制玩家的错误次数,当错误次数超过限制时,游戏即刻结束。这些功能就留给你自己去尝试实现它们。
想看更多学习案例,欢迎点击查看《Scratch 3学习手册》open in new window。
想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店。