高级篇——认识字母

【疑惑篇】

点击绿旗按钮,选择点读字母或听选字母模式,开始学习认识字母。

视频演示open in new window

亲自操作open in new window

【线索篇】

案例分析

它们发生的场景是什么?

每个场景中有哪些角色?

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

  1. 点击绿旗按钮,进入主菜单背景,循环播放背景音乐,展示选项按钮,小猫通过说话给出提示。
  2. 鼠标移至按钮时,按钮有颜色切换效果。点击按钮后,进入相应游戏背景,隐藏选项按钮,停止播放背景音乐。
  3. 进入游戏背景,小猫先给出游戏提示,然后开始游戏。
  4. 点读字母游戏:
    • 26个字母依次显示在舞台上。
    • 点击字母后,朗读对应字母,展示动画效果。
  5. 听选字母游戏:
    • 随机从26个字母中选择4个选项字母,再从4个选项中随机挑选一个为听选选项。
    • 让4个选项字母从上至下掉落,同时朗读听选选项字母。
    • 玩家点击错误选项时,播放错误音效和错误动画。
    • 玩家点击正确选项时,重新执行前三步。
  6. 在游戏背景中点击Back按钮,回到主菜单背景。

积木提示

当绿旗被点击

移动(10)步

右转(15)度

左转(15)度

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

面向(90)方向

将y坐标增加(10)

y坐标

说(你好!)(2)秒

说(你好!)

换成([造型1])造型

下一个造型

换成([背景1])背景

将大小增加(10)

将大小设为(100)

显示

隐藏

造型[编号]

背景[编号]

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

播放声音([喵])

停止所有声音

当角色被点击

当背景换成[背景1]

当接收到[消息1]

广播[消息1]

等待(1)秒

重复执行(10)次

重复执行

如果<>那么

如果<>那么否则

重复执行直到<>

停止[全部脚本]

当作为克隆体启动时

克隆[自己]

删除此克隆体

碰到([鼠标指针])?

按下鼠标?

加法

减法

乘法

除法

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

大于

小于

等于

不成立

余数

[绝对值]

变量

自制积木

解决篇

ABCDEFG,HIJKLMN,OPQ,RST,UVW,XYZ,前面这些便是自带背景音乐的26个英文字母。相信你学习英文的过程就是从认识它们开始。这个案例我们来做一个认识26个英文字母的小游戏。

游戏分为两种模式。点读字母,将26个字母全部显示在舞台上,鼠标点击其中一个就会播放对应字母的读音。听选字母,随机给出4个字母,朗读其中一个,玩家需要点击被朗读的字母。下面就开始案例制作。

第一步,添加背景。

这一步很简单,从Scratch的背景库中选出需要的三个背景。

第二步,添加角色。

小猫是默认的角色不用添加。接着是案例中用到的3个按钮。你可以只添加一个按钮角色,在使用克隆来完成。或者也可以使用三个按钮角色来分别控制。在按钮上写上各自的文字。

最后添加字母角色。26个字母作为一个角色,按照英文字母的顺序添加对应的造型。

同时,按照相同顺序为26个字母添加朗读声音。你可以选择自己录音,或者搜索网上的字母朗读声,也可以加入我的知识星球获取游戏素材进行上传。

第三步,使用指令积木实现程序。

1. 点击绿旗按钮,进入主菜单背景,循环播放背景音乐,展示选项按钮,小猫通过说话给出提示。

与之前的案例相同,我们还是让舞台来控制背景切换和播放背景音乐。之前在点击绿旗按钮后,我们会先换成([Blue Sky])背景,然后重复播放背景音乐。这样使用的话,播放背景音乐的重复执行积木只会在绿岸按钮被点击后执行一次。

在这个案例中,背景音乐在进入游戏背景时会被暂停,回到Blue Sky背景后又重新播放,所以需要将重复播放背景音乐的指令串改为使用当背景换成[Blue Sky]事件积木启动。

在这里请你思考一个问题,如果你还是想让播放背景音乐放在当绿旗被点击积木后,有什么方式可以控制音乐的暂停和播放?给你一个提示,利用背景名称或者新建一个状态变量来做判断。

换成([Blue Sky])背景后,将选项按钮和小猫移到舞台固定位置显示出来,再让小猫利用说(你好!)积木给出游戏提示。隐藏back按钮和字母角色。

2. 鼠标移至按钮时,按钮有颜色切换效果。点击按钮后,进入相应游戏背景,隐藏选项按钮,停止播放背景音乐。

消灭虫子中一样,重复判断鼠标是否碰到按钮,修改按钮颜色。

点击“点读字母”按钮,换成([Space City 2])背景,点击“听选字母”按钮,换成([Wall 1])背景。切换背景后,将两个按钮都隐藏起来。

舞台换成Space City 2和Wall 1背景后使用停止[该角色的其他脚本]积木停止背景音乐。

请你尝试一下,如果将停止[该角色的其他脚本]积木换成停止所有声音积木,可以停止背景音乐吗?为什么?

给你一个提示,停止所有声音积木只会结束播放声音([喵])等待播完积木的执行。

3. 进入游戏背景,小猫先给出游戏提示,然后开始游戏。

舞台换成Space City 2和Wall 1背景后小猫需要说出不同的游戏提示。因为在Blue Sky背景中小猫就已经在说话,为了有一种文字切换的效果,可以先隐藏之前的说话气泡,等待很短时间后再说出游戏提示。说完提示后将小猫隐藏起来,准备开始游戏。

注意观察上面两个指令串是不是很相似,唯一的区别就是说话的内容不同。是不是可以像菩提偈一样,利用一个自制积木来简化它们。

说完提示后如何开始游戏呢?

在之前的案例中我们都是切换到不同背景后直接开始游戏,现在需要等小猫说完话游戏才会开始。你可以让字母角色切换到游戏背景后先等待小猫说话,之后再开始游戏。

或者让小猫说完话后发出消息,字母角色接收到消息时开始游戏。

4. 点读字母游戏:

游戏分为两种模式,你可以先来完成点读字母游戏。

  • 26个字母依次显示在舞台上。

开始游戏后,先要把字母按照顺序显示在舞台上。是不是又和上一个案例舒尔特方格很类似。使用克隆[自己]积木克隆出26个字母,然后计算出它们各自的位置显示出来。为了让它们可以同时显示,还是可以将这些操作放入一个自制积木中,选择运行时不刷新屏幕。

至于计算坐标时使用的编号,你同样可以使用角色的造型编号进行计算。这一次我换成使用变量来计算,并且不再区分行数和列数,通过编号0~25计算出每个字母的坐标值。计算方法就和舒尔特方格中,计算主菜单按钮的坐标值一样。

为了让字母排列出来不会显得太死板,还可以随机修改每个字母的方向值。

  • 点击字母后,朗读对应字母,展示动画效果。

现在玩家去点击任意一个字母,会播放对应的字母音,同时字母出现一个大小变化的效果。

如何播放对应的声音?

之前我们添加字母造型和声音时都是按照相同的顺序进行排列,现在你就可以将被点击角色的造型编号作为参数传入播放声音([喵])积木中使用。

制作大小变化的效果时要注意,角色是逐渐变大,再逐渐变小。使用重复执行(10)次积木和将大小增加(10)积木完成。

你同样可以将这一步操作单独放入自制积木中,需要注意的是这一次不能勾选运行时不刷新屏幕选项。你可以尝试一下如果勾选了会发生什么情况?想一想为什么会这样?

5. 听选字母游戏:

完成了点读字母模式后,接下来开始制作听选字母模式。你首先遇到的第一个问题是,现在只有一个字母角色,当它接收到“开始游戏”消息时,如何区分当前应该是点读字母还是听选字母,以便做出不同的操作?

有没有想到使用背景编号或者背景名称来判断?

  • 随机从26个字母中选择4个选项字母,再从4个选项中随机挑选一个为听选选项。

听选字母模式中,需要随机选出4个字母作为游戏选项,然后再从其中随机选择一个作为正确答案。

如何从26个字母中随机选出4个字母,而且不能重复。有没有想到猜数字中随机选择4个不同的数字?你可以新建一个“随机选项”列表来帮忙筛选不同的字母,并且将它们的造型编号存入列表中。最后再新建一个“正确选项”变量来存储正确答案。

同样,这一步你也可以单独放入一个自制积木中。因为整个计算过程不需要在舞台中展示,所以勾选上运行时不刷新屏幕。

制作完成后,你可以将随机选项列表显示在舞台上,然后点击定义生成随机选项这个指令串,看看列表中的编号值会不会随机变换。

  • 让4个选项字母从上至下掉落,同时朗读听选选项字母。

作为选项的4个字母已经准备好,现在需要让它们从舞台的上方慢慢掉落。同样还是使用克隆[自己]积木克隆出4个字母角色。将它们的造型切换成“随机选项”列表中存入的造型编号。与点读字母类似,把它们移到舞台的顶部一字排开。

还是将上面的操作放入单独的自制积木中,勾选运行时不刷新屏幕选项。

点击绿旗按钮进行测试,现在舞台顶部已经可以出现4个不同的字母,接着就需要让它们掉落下来。

这时你会遇到和之前相同的问题,点读字母和听选字母都会用到克隆体,如何区分哪些克隆体需要掉落?

当作为克隆体启动时积木后面增加一个对背景编号或者背景名称的判断,然后利用你早已熟悉的移动方法让字母慢慢掉落。同样可以将它放入单独的自制积木中,这里你需要看见自制积木中角色移动的过程,所以不能勾选运行时不刷新屏幕选项。

在字母掉落的同时使用播放声音([喵])等待播完积木播放正确字母的读音,积木的参数就是“正确选项”的变量值。你还可以规定每组选项可以播放几次声音。例如,我限制了每组选项只播放3次声音。

在这里请你思考一个问题。上面的操作中我们是先克隆出字母角色,然后让它们掉落下来,最后再播放声音。在指令串中播放正确选项声音积木也是拼接在克隆随机选项字母积木之后。为什么声音却可以在字母下落的同时播放出来?

  • 玩家点击错误选项时,播放错误音效和错误动画。

这一步中还是会遇到同样的问题,你需要利用背景编号或者背景名称区分玩家当前是在进行哪个游戏,然后做出不同的操作。

接着如何判断玩家点击的字母是否选择正确呢?

是不是只要将被点击的角色造型编号与“正确选项”变量值进行比较,如果造型编号等于“正确选项”变量值,那么说明玩家选择正确,否则就是玩家选择错误。

选择错误时,你可以播放一个错误音效,然后让字母左右摇摆几次,就像是字母在对玩家摇头。

  • 玩家点击正确选项时,重新执行前三步。

玩家如果选择正确,我们就要重新出题。先生成随机选项,然后克隆随机选项字母,并让它们下落,接着播放新的正确选项的声音。

点击绿旗按钮进行测试,如果你点击的是错误选项,游戏保持正常。当你点击正确选项时,问题出现了。现在确实生成了新的选项,但是旧的选项也还保留在舞台上。如何解决?是不是需要先将原本的克隆体都删除掉,然后再重新生成新的克隆体。如何删除旧的克隆体呢?你需要发送消息通知它们,当它们收到消息后再将自己删除。

重新点击绿旗按钮进行测试,好像程序可以正常运行了。可在你连续选对几次之后,新问题出现,此时游戏不会再朗读正确选项。为什么会这样呢?想要找到这个问题的原因,需要你对克隆体和并行执行的使用方法很熟悉才行。

在分析原因之前,我们先区分一下舞台上正在运行的角色。我们把第一次生成的克隆体取名为旧克隆体,然后把玩家选择正确的字母后,重新生成的克隆体取名为新克隆体

首先,原始角色在接收到“开始游戏”的消息后,会先生成旧克隆体,旧克隆体出现后开始从舞台上方往下掉落。同时你会听见朗读字母的声音,此时执行播放声音指令的是原始角色。

接着,玩家点击正确的选项。被点击的旧克隆体开始执行上图的指令串。可以将上图的指令串大致分为三步,第一步发出一条“删除所有克隆体”的消息,第二步生成新的克隆体掉落,第三步播放新的正确选项声音。

当旧克隆体通过第一步发送出“删除所有克隆体”的消息后,它自己也会接收到这个消息。此时,对被点击的这个旧克隆体来说,之前的第二步操作和接收消息操作是并行执行的。它一边执行第二步克隆出新克隆体,一边接收到消息将自己删除。现在问题出现了,因为旧克隆体已经把自己给删掉,原本该由它执行的第三步操作也就没有人执行了。

这里你可能还会有疑惑,为什么前几次你点击正确选项后,可以听见新正确选项的声音呢?这是因为旧克隆体在第二步中重新设置了“正确选项”的变量值,而原始角色播放声音时是将该变量作为播放声音([喵])积木的参数使用。别忘了原始角色会播放3次声音,假如你能在它播放完3次声音之前,每选对一次正确选项,“正确选项”变量就会更换变量值,原始角色也就会朗读新的字母。

你可以自己做一个实验,在旧克隆体发送“删除所有克隆体”消息后,增加一个等待(1)秒积木。

现在旧克隆体发送消息的指令串发送消息后会开始等待,接收消息的指令串会将自己删除。这时因为旧克隆体已经被自己删除掉,所以等待(1)秒积木后面的指令也就没有人来执行了。舞台上你所看见的效果就变成了,当选中正确选项后,字母会消失,但是不会出现新的字母。

原因分析完了,问题需要怎么解决呢?

解决方法是我们把重新生成克隆体和播放声音的操作不让克隆体执行,把它们转交由原始角色来执行。这样克隆体将自己删除后,不会影响到原始角色的操作。

如何能交给原始角色执行呢?

只需要在发送“删除所有克隆体”消息后面,重新再发送一条消息通知原始角色就行。例如,你可以发送一条“出题”消息,当原始角色接收到出题消息时,就会生成新克隆体并播放声音。

有时候当你选中正确答案时,正好在播放旧的正确答案声音,此时你会同时听见两个字母声音。为了解决这个问题,你可以在生成新克隆体之前,先将其他运行的脚本都停止掉。

重新点击绿旗按钮进行测试,现在还剩下一个问题。如果你一直没有选中正确选项,原有字母在掉落到舞台底部后就会消失,但是不会重新出现新的字母。如何解决?

解决方法和上面类似,当克隆体下落到舞台底部后,先通知删除所有克隆体,再通知原始角色重新出题。

6. 在游戏背景中点击Back按钮,回到主菜单背景。

最后一步很简单了,当背景换成Space City 2和Wall 1时,将Back按钮显示出来。当它被点击时再换成([Blue Sky])背景

点击绿旗按钮进行测试,你会发现回到Blue Sky背景后,听选字母的声音不会停止播放。如果你重复点击BACK按钮和点读字母按钮的话,舞台上的字母还会越来越多。

解决方式很简单,当背景换成[Blue Sky]时,字母角色先用停止[该角色的其他脚本]积木停止声音播放,再用删除此克隆体积木将原本的克隆体全部删除。

以上,就完成了认知字母的游戏。

如果你是自己实现这个案例的话,你所使用的积木块肯定不会和我做的一模一样。其中最容易犯错并且不知道如何解决的问题,就是实现听选字母过程中所涉及的克隆体、消息和多指令串并行执行。当你碰到问题时,一定要让自己静下来,看看当前的指令串究竟是由哪个角色在执行?各个角色或克隆体之间会有什么关系?等你解决的问题越来越多,你也就会变得越来越熟练。

完成案例后,你同样可以自己增加新功能。例如,增加计时和计分功能,选择正确和错误的英文字母时,可以得分和扣分,最后看看谁在规定时限内获得的分数最高。

想看更多学习案例,欢迎点击查看《Scratch 3学习手册》open in new window

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

Last Updated:
Contributors: lanheixingkong