为孩子们准备的Scratch音乐项目:二进制英雄

由 小石头编程 发表于 2024年05月27日
### 简介 这个项目中我们将制作一个游戏,在游戏中我们需要跟随屏幕上下滚动的音符来演奏一首歌。 我们将会制作什么: 点击绿旗开始游戏。使用 z、x、c 和 v 键来在音符到达屏幕底部时演奏正确的音符。每个正确的音符都会得到10分。 ![](https://www.codxz.com/media/upload/2024052715412423.png) ### 资源获取 ![](https://www.codxz.com/media/upload/2024042517221275.png) 想要获取项目文件,可扫码关注“小石头编程”公众号,回复“**二进制**”获取下载地址。 ### 能学到的知识 在这个项目中,我们可以学到以下知识: - 如何使用列表存储音符序列和时间 - 如何使用带输入的自定义模块(也就是方法) ### 项目制作 首先我们在Scratch中新建一个项目, 然后添加一个角色,命名为"1",下面是角色"1"用到的图片资源: ![off](https://www.codxz.com/media/upload/2024052715461512.png) ![on](https://www.codxz.com/media/upload/2024052715461525.png) 角色"1"有2个造型,分别是on和off,off为⚪,on为实心圆。 在背景中,添加3个背景: ![normal](https://www.codxz.com/media/upload/2024052715474278.png) ![correct](https://www.codxz.com/media/upload/2024052715474237.png) ![incorrect](https://www.codxz.com/media/upload/2024052715474228.png) 上面3张图分别为 normal, correct,incorrect,表示正常,正确和不正确3个状态。 #### 1、按键操作 我们点击名为"1"的角色,并添加代码,如果按下 v 键,就更改角色的造型(costume)。 ![](https://www.codxz.com/media/upload/2024052715525884.png) 按下 v 键测试代码,精灵应该会亮起。 ![](https://www.codxz.com/media/upload/2024052716060321.png) 然后我们再添加3个角色,分别命名为2,4,8,和背景中c,x,z键对应,使用类似的代码来实现按键操作。 ![](https://www.codxz.com/media/upload/2024052716162218.png) #### 2、二进制数字 我们将使用不同的按键组合来演奏不同的音符。每个按键要么是开启(按下)状态,要么是关闭(未按下)状态。这意味着我们可以把每种按键组合看作是一个二进制数字。 从右到左,每个按键的数值都是前一个的2倍:1、2、4和8。通过加上所有被按下的按键对应的数值,我们就可以得出音符的值。 ![](https://www.codxz.com/media/upload/2024052716303446.png) 有 2^4 = 16 种按键组合。这意味着你可以演奏15个不同的音符,因为 0 代表没有音符被播放。 创建一个名为"note"的新变量,并将它拖放到四个音符角色的旁边。 ![](https://www.codxz.com/media/upload/2024052716330899.png) "note"变量将存储应该播放的音符的值。 在舞台上添加代码,根据按下的按键组合来计算 note 的值。 例如,当 c 和 v 键被按下时,note 的值应该是 3。 在舞台上,添加修改note变量的代码。 - 当点击旗帜时,变量note应该被设置为0。 - 如果按下v键,音符应该改变1。 - 如果按下c键,音符应该改变2。 - 如果按下x键,音符应该改变4。 - 如果按下z键,音符应该改变8。 - 所有这些代码都应该永远重复。 ![](https://www.codxz.com/media/upload/2024052716362228.png) #### 3、播放音符 当我们按键时,应该播放音乐。 在任何四个键中的任何一个被按下时,广播一个'note change'消息。 ![](https://www.codxz.com/media/upload/2024052716382623.png) 在舞台上添加代码,当一个键组合被按下时播放一个音符。 音符应该从中音C开始,这是第60个音符。 ![](https://www.codxz.com/media/upload/2024052716394419.png) 测试代码,检查按下V键是,是否会播放音乐。 添加代码使所有的键精灵在一个键被按住的情况下只播放一次音符。 ![](https://www.codxz.com/media/upload/2024052716414551.png) #### 4、滚动音符 我们需要让音符在舞台上向下滚动,这样玩家就知道哪些键需要按以及什么时候需要按。 创建两个列表,分别命名为"notes"和"times"。 将以下数字添加到你的音符和时间列表中。注意:确保按照正确的顺序添加这些确切的数字。 ![](https://www.codxz.com/media/upload/2024052716440266.png) 以下就是你的游戏中存储歌曲的方式: - 音符列表存储歌曲的音符(从1到15),按顺序排列 - 时间列表存储歌曲中应该播放音符的时间点 ![](https://www.codxz.com/media/upload/2024052716443314.png) 那么对于这两个新的列表: - 第1个音符(中音C)应该在5秒时播放 - 第1个音符应该在5.5秒时再次播放 - 第3个音符应该在6秒时播放 - 等等... 点击'note'精灵,然后点击显示。 ![](https://www.codxz.com/media/upload/2024052716450769.png) 然后点击造型: ![](https://www.codxz.com/media/upload/2024052716451692.png) 我们应该看到'note'精灵有15种不同的造型,每个造型对应从1到15的不同音符。 添加代码,为存储在notes中的每个音符创建一个'note'精灵克隆体。每个克隆体应该在存储在times中的正确时间创建。每个克隆体应该在它的音符需要播放的两秒前创建。这给克隆体两秒时间向下移动屏幕。我们将在稍后添加移动克隆体的代码! ![](https://www.codxz.com/media/upload/2024052716455322.png) 代码如下: ![](https://www.codxz.com/media/upload/2024052716470463.png) 现在测试代码时,似乎什么也没发生,因为'note'精灵被隐藏了。如果您显示(或不隐藏)该精灵,那么您应该看到克隆体被创建在彼此之上。 添加代码,使每个'note'克隆从舞台顶部滑动到底部,然后被删除。 ![](https://www.codxz.com/media/upload/2024052716500418.png) #### 5、存储音符 目前,在播放完笔记后,它们会从列表中被删除,导致列表变成空的。 ![](https://www.codxz.com/media/upload/2024052716510007.png) 现在我们将添加代码来在项目中存储歌曲,这样就不需要每次手动添加列表了。 创建一个名为"load'happy birthday'"的自定义块,它会清空两个列表(音符和时间)中的所有内容,然后重新添加正确的数字到这两个列表中。 ![](https://www.codxz.com/media/upload/2024052716571480.png) 然后在启动时加载这个方法 ![](https://www.codxz.com/media/upload/2024052716580840.png) #### 6、添加分数 通过给玩家正确演奏音符的得分来改善我们的游戏。 在我们的舞台顶部创建一个名为"score"的新变量。 ![](https://www.codxz.com/media/upload/2024052717011655.png) 在玩家在正确时间演奏正确音符时,增加分数。记得在游戏开始时将分数设置为0。 当正确的音符被演奏时,广播一个名为"correct"的消息,让演奏错误时,广播要给名为"incorrect"的消息。 ![](https://www.codxz.com/media/upload/2024052717034169.png) 添加代码到舞台,当玩家演奏正确音符时,短暂改变背景,当演奏失败时,修改为失败的背景。 ![](https://www.codxz.com/media/upload/2024052717043029.png) ![](https://www.codxz.com/media/upload/2024052717051935.png) 现在项目已经完成了,大家可以尝试去修改来实现自己的二进制英雄游戏吧。