Day43 ( 游戏设计 ) 音阶记忆游戏

音阶记忆游戏

教学原文参考:音阶记忆游戏

这篇文章会介绍,使用 Scratch 3 里的音乐扩充功能,搭配变数、清单、函式、逻辑判断、广播讯息、重复、尺寸、字串组合...等积木,实作一个有趣的 Do、Re、Mi、Fa、So 音阶记忆游戏。

相关文章参考:音乐扩充功能清单函式变数重复逻辑判断广播讯息尺寸字串组合

角色设定

在角色编辑区,使用绘画,加入五个不同颜色「圆形」的新角色,五个圆形分别表示 Do、Re、Mi、Fa、So ( 参考:造型与绘图 )。

Scratch 3 教学 - 音阶记忆游戏

将角色在舞台上排列成下图的样子。

Scratch 3 教学 - 音阶记忆游戏

积木程序原理 ( 猫咪 )

点击「猫咪」角色,建立四个变数和三个清单:

  • 音阶数:每一题要出现的音阶数量。
  • 答对:纪录答对题数 ( 勾选显示在画面上 )。
  • go:判断下方圆形是否能点击。
  • n:取得清单的项目。
  • 答案:记录答案的清单。
  • 题目:题目的清单。
  • list:Do、Re、Mi、Fa、So 音阶的清单。

Scratch 3 教学 - 音阶记忆游戏

点击绿旗时,将音阶数和 go 的变数都设为 0,并让猫咪说出「点我,开始游戏吧!」。

Scratch 3 教学 - 音阶记忆游戏

点击角色时,判断如果音阶数等於 0,就广播「开始」的讯息。

为什麽要使用逻辑判断和广播讯息?因为如果直接将程序放在点击角色里,会在重复点击角色时,发生预期外的状况,所以使用广播讯息来避免例外状况发生。

Scratch 3 教学 - 音阶记忆游戏

将 list 清单勾选显示在舞台上,点选清单的「+」号,增加 60、62、64、65、67 五个项目,分别代表对应的音阶,完成後再将清单取消勾选,在舞台上隐藏。

注意,这个步骤很容易被忽略。

Scratch 3 教学 - 音阶记忆游戏

建立一个「建立题目」的函式,建立音阶题目:

  • 删除题目和答案清单的所有项目 ( 清空清单内容 )
  • 使用「重复...次数」积木,重复「无条件舍去的音阶数」。
  • 每次重复随机读取 list 清单的某个项目,将其放入题目清单里
  • 让猫咪说出「几个音」的文字。

为什麽要使用「无条件舍去」,因为待会在作答之後,会将音阶数增加 0.5,让音阶数量是 3、3、4、4、5、5...的规律,所以使用无条件舍去,如果希望是 3、4、5、6 的规律,就不需要使用无条件舍去

Scratch 3 教学 - 音阶记忆游戏

再建立一个「听声音」的函式,播放题目的音阶,并加入音乐的扩充功能:

  • 设定变数 n 为 0,目的在於取出题目清单的项目。
  • 使用「重复...次数」积木,重复「无条件舍去的音阶数」,每次重复执行:
    • 将 n 增加 1。
    • 广播讯息「题目清单中对应的项目」
    • 演奏题目清单中对应的项目
  • 重复结束後,让猫咪说出「有几个音,请作答」的文字。
  • 将变数 go 设为 1,表示使用者可以开始回答。

Scratch 3 教学 - 音阶记忆游戏

编辑收到「开始」讯息时的程序:

  • 设定「答对」为 0。
  • 设定「音阶数」为 3。
  • 让猫咪每隔一秒讲出 3、2、1。
  • 猫咪讲完话之後,依序执行「建立题目」和「听声音」的函式

Scratch 3 教学 - 音阶记忆游戏

编辑收到「next」讯息时的程序 ( next 讯息会在「判断答对」之後发出 ):

  • 将「答对」改变 1
  • 将「音阶数」改变 0.5
  • 让猫咪讲出「答对罗!下一题」,持续两秒。
  • 两秒後,依序执行「建立题目」和「听声音」的函式

Scratch 3 教学 - 音阶记忆游戏

编辑收到「gameover」讯息时的程序 ( gameover 讯息会在「判断答错」之後发出 )

  • 将「音阶数」设为 0
  • 让猫咪说出「答错罗!游戏结束!」,持续两秒。
  • 两秒後,让猫咪说出答对的题数,并提示使用者再次点击可以继续玩。

Scratch 3 教学 - 音阶记忆游戏

积木程序原理 ( 圆点 )

点击「Do」的圆点角色,设定点击绿旗时,尺寸设定为 100% ( 因为播放音阶时会放大 )

Scratch 3 教学 - 音阶记忆游戏

设定当收到讯息「60」时,将尺寸变成 120%,等待 0.5 秒後再变回 100%。

收到讯息可以点击下拉选单中「新的讯息」,增加 60 的新讯息,又因为 Do 的音阶为 60,所以使用该数值作为判断依据。

Scratch 3 教学 - 音阶记忆游戏

接着设定当角色被点击的程序:

  • 判断如果 go 等於 1,表示可以进行作答的行为。
  • 将尺寸变成 120%。
  • 将 60 添加到答案清单中 ( 因为 Do 的音阶是 60 )。
  • 判断如果答案的长度等於题目,表示作答完成 ( 注意一定要摆在这个位置 ),完成时执行:
    • 将 go 设为 0。
    • 判断如果答案等於题目,表示答对,广播 next 讯息
    • 判断如果答案不等於题目,表示答错,广播 gameover 讯息
  • 演奏音阶 60。
  • 将尺寸变成 100%。

Scratch 3 教学 - 音阶记忆游戏

最後将圆形 Do 的程序,复制到 Re、Mi、Fa 和 So 的角色里。

  • 复制方法 1:可以使用键盘的 Ctrl + c 复制,再进入其他角色贴上。
  • 复制方法 2:直接用滑鼠拖拉的方式,将程序积木拖拉到其他角色上放开,就会自动复制过去。

Scratch 3 教学 - 音阶记忆游戏

以下图的 Re 为例,总共有三个位置要改成 62,依此类推修改 Mi、Fa 和 So。

Scratch 3 教学 - 音阶记忆游戏

完成效果

完成後,点击绿旗,就可以开始进行音阶记忆的游戏。

Scratch 3 教学 - 音阶记忆游戏

范例解答

范例解答:音阶记忆游戏

延伸练习

如果已经熟悉了音阶记忆游戏的原理,还可以尝试更多好玩的作法:

  • 加入「云端变数」,纪录游戏的最高分 ( 解答 )

关於我

大家好,我是 OXXO,是个即将迈入中年的斜杠青年,如果对我有点兴趣(笑,可以与我联系,一起来做点有玩又有创意的东西吧!


<<:  Unity与Photon的新手相遇旅途 | Day28-Unity 发布到IOS手机上

>>:  Day43 ( 电子元件 ) 触碰开灯 ( 引脚按下 )

玩转 Storybook: Day 29 Design System for Developers - Distribute

在整个组织中发布 Design System 从架构的角度来看,Design System 如同 l...

day4 network simulator (雷)新不代表好

来部落格看图文并茂文章 补觉鸣诗 模拟器分三种 packet tracer GNS3 EVE-NG ...

day14: 模组化好的写法 -单一功能原则(2)

接续前一天的单一功能原则,我们重构了 fetchUser 变成一个 customer hook , ...

【在厨房想30天的演算法】Day 20 演算法 : 最小生成树 MST Kruskal、Prim

Aloha!又是我少女人妻 Uerica!终於来到第 20 天了 (欢呼),已经过了三分之二了~人说...

Day 4 - 资料绑定与模板语法

在 Vue 中,使用了基於HMTL的模板,这种模板与允许开发者声明式地将 DOM 绑定至底层 Vue...