中级篇——数一数

疑惑篇

点击绿旗按钮开始游戏,屏幕上显示随机数量的物体,小猫提问有多少物体,玩家选择正确数字。

视频演示open in new window

亲自操作open in new window

【线索篇】

案例分析

它们发生的场景是什么?

每个场景中有哪些角色?

每个场景中的每个角色在做什么?

  1. 点击绿旗按钮,循环播放背景音乐。舞台上方显示出数量不定的某种物体,玩家可拖动舞台上的物体。
  2. 小猫向玩家提问:舞台上物体的数量是多少?
  3. 舞台下方出现三个不同的数字,其中一个为物体的数量。
  4. 玩家选择其中一个数字。如果玩家选择的数字不等于物体的数量,播放错误音效,被选中的数字左右摇摆几次。如果玩家选择的数字等于物体的数量,播放正确音效,数字跳跃一次。接着,物体和数字消失,重复前三步。

积木提示

当绿旗被点击

当角色被点击

移到x:(0) y:(0)

移到([随机位置])

说(你好!)(2)秒

换成([造型1])造型

显示

隐藏

背景[编号]

播放声音([喵])等待播完

播放声音([喵])

当接收到[消息1]

广播[消息1]

等待(1)秒

重复执行(10)次

重复执行

如果<>那么

如果<>那么否则

([舞台])的[背景编号]

加法

减法

在(1)和(10)之间取随机数

大于

小于

等于

连接(苹果 )和(香蕉)

建立一个变量

使用变量

将[我的变量]设为(0)

注意事项

  1. 作品中有几个角色?
  2. 小猫如何知道显示在舞台上物体的数量单位和名字?
  3. 如何判断玩家选择的数字是否正确?

【解决篇】

这是一个很简单的识数的小游戏,舞台上不停出现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

想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店