音阶记忆
这篇文章会介绍,使用 Scratch 3 里的音乐扩充功能,搭配变数、清单、函数、逻辑判断、广播消息、重复、尺寸、字串组合...等积木,实作一个有趣的 Do、Re、Mi、Fa、So 音阶记忆游戏。
角色设定
在角色编辑区,使用绘画,加入五个不同颜色“圆形”的新角色,五个圆形分别表示 Do、Re、Mi、Fa、So ( 参考:造型与绘图 )。
将角色在舞台上排列成下图的样子。
积木程序原理 ( 猫咪 )
点击“猫咪”角色,建立四个变数和三个清单:
- 音阶数:每一题要出现的音阶数量。
- 答对:纪录答对题数 ( 勾选显示在画面上 )。
- go:判断下方圆形是否能点击。
- n:取得清单的项目。
- 答案:记录答案的清单。
- 题目:题目的清单。
- list:Do、Re、Mi、Fa、So 音阶的清单。
点击绿旗时,将音阶数和 go 的变数都设为 0,并让猫咪说出“点我,开始游戏吧!”。
点击角色时,判断如果音阶数等于 0,就广播“开始”的消息。
为什么要使用逻辑判断和广播消息?因为如果直接将程序放在点击角色里,会在重复点击角色时,发生预期外的状况,所以使用广播消息来避免例外状况发生。
将 list 清单勾选显示在舞台上,点选清单的“+”号,增加 60、62、64、65、67 五个项目,分别代表对应的音阶,完成后再将清单取消勾选,在舞台上隐藏。
注意,这个步骤很容易被忽略。
建立一个“建立题目”的函数,建立音阶题目:
- 删除题目和答案清单的所有项目 ( 清空清单内容 )
- 使用“重复...次数”积木,重复“无条件舍去的音阶数”。
- 每次重复随机读取 list 清单的某个项目,将其放入题目清单里。
- 让猫咪说出“几个音”的文字。
为什么要使用“无条件舍去”,因为待会在作答之后,会将音阶数增加 0.5,让音阶数量是 3、3、4、4、5、5...的规律,所以使用无条件舍去,如果希望是 3、4、5、6 的规律,就不需要使用无条件舍去。
再建立一个“听声音”的函数,播放题目的音阶,并加入音乐的扩充功能:
- 设定变数 n 为 0,目的在于取出题目清单的项目。
- 使用“重复...次数”积木,重复“无条件舍去的音阶数”,每次重复执行:
- 将 n 增加 1。
- 广播消息“题目清单中对应的项目”。
- 演奏题目清单中对应的项目。
- 重复结束后,让猫咪说出“有几个音,请作答”的文字。
- 将变数 go 设为 1,表示用户可以开始回答。
编辑收到“开始”消息时的程序:
- 设定“答对”为 0。
- 设定“音阶数”为 3。
- 让猫咪每隔一秒讲出 3、2、1。
- 猫咪讲完话之后,依序执行“建立题目”和“听声音”的函数。
编辑收到“next”消息时的程序 ( next 消息会在“判断答对”之后发出 ):
- 将“答对”改变 1。
- 将“音阶数”改变 0.5。
- 让猫咪讲出“答对啰!下一题”,持续两秒。
- 两秒后,依序执行“建立题目”和“听声音”的函数。
编辑收到“gameover”消息时的程序 ( gameover 消息会在“判断答错”之后发出 )
- 将“音阶数”设为 0
- 让猫咪说出“答错啰!游戏结束!”,持续两秒。
- 两秒后,让猫咪说出答对的题数,并提示用户再次点击可以继续玩。
积木程序原理 ( 圆点 )
点击“Do”的圆点角色,设定点击绿旗时,尺寸设定为 100% ( 因为播放音阶时会放大 )
设定当收到消息“60”时,将尺寸变成 120%,等待 0.5 秒后再变回 100%。
收到消息可以点击下拉选单中“新的消息”,增加 60 的新消息,又因为 Do 的音阶为 60,所以使用该数值作为判断依据。
接着设定当角色被点击的程序:
- 判断如果 go 等于 1,表示可以进行作答的行为。
- 将尺寸变成 120%。
- 将 60 添加到答案清单中 ( 因为 Do 的音阶是 60 )。
- 判断如果答案的长度等于题目,表示作答完成 ( 注意一定要摆在这个位置 ),完成时执行:
- 将 go 设为 0。
- 判断如果答案等于题目,表示答对,广播 next 消息。
- 判断如果答案不等于题目,表示答错,广播 gameover 消息。
- 演奏音阶 60。
- 将尺寸变成 100%。
最后将圆形 Do 的程序,复制到 Re、Mi、Fa 和 So 的角色里。
- 复制方法 1:可以使用键盘的 Ctrl + c 复制,再进入其他角色贴上。
- 复制方法 2:直接用鼠标拖拉的方式,将程序积木拖拉到其他角色上放开,就会自动复制过去。
以下图的 Re 为例,总共有三个位置要改成 62,依此类推修改 Mi、Fa 和 So。
完成效果
完成后,点击绿旗,就可以开始进行音阶记忆的游戏。
范例解答
范例解答:音阶记忆游戏
延伸练习
如果已经熟悉了音阶记忆游戏的原理,还可以尝试更多好玩的作法:
- 加入“云端变数”,纪录游戏的最高分 ( 解答 )
微信扫码关注
抖音扫码关注