带孩子玩Scratch编程:学龄前趣味程序(9)

上一篇

(9) 钢琴曲:知更鸟罗宾

Scratch小游戏知更鸟罗宾

程序目标描述

可能小朋友已经发现了,在 Scratch 的积木箱扩展里,还有音乐、画笔等选项,看上去也很有意思。本集我们就使用“音乐”扩展,让计算机演奏一首非常好听的钢琴曲《知更鸟罗宾》。

素材准备

钢琴谱来自美国威利斯音乐出版公司的《约翰·汤普森简易钢琴教程3》,可能不少小朋友已经会演奏它了。由于版权问题,这里就不把五线谱贴出来了,没有该教材的小朋友可以让家长从网上寻找,或直接下载后边本站转码的 txt 文件。

如何把五线谱录入计算机,并让 Scratch 演奏出来,是本程序要解决的主要问题。我们这次跟上集类似,也是准备了文本文件,在搭建程序时,导入创建的列表中。由于钢琴曲有两个声部,我们也准备了两个文本文件,分别是:

旋律声部:track1.txt

60
0.5
0
0.5
62
0.5
0
0.5
64
0.5
67
0.5
0
1
64
0.5
0
0.5
62
0.5
67
0.5
0
1
64
1
60
1
0
4
60
0.5
62
0.5
64
0.5
67
0.5
0
1
64
0.5
0
0.5
62
0.5
67
0.5
0
1
64
1
60
4
60
1
62
1
64
0.5
60
0.5
0
1
62
0.5
0
0.5
64
0.5
60
0.5
0
1
62
0.5
0
0.5
64
0.5
60
0.5
0
1
62
0.5
0
0.5
63
1
0
1
60
0.5
62
0.5
64
0.5
67
0.5
0
1
64
0.5
0
0.5
62
0.5
67
0.5
0
1
64
1
60
4

伴奏声部:track2.txt

0
2
48
1
0
2
53
1
0
2
52
1
0
1
55
1
55
2
0
1
48
1
0
2
53
1
0
2
52
4
0
2
57
3
56
3
55
3
53
1
0
2
55
1
0
2
53
1
0
2
52
3
48
1

注意,上述文本文件中,不要有多余的空行。

可以在以下链接中下载:

http://www.fangtax.com/wp-content/uploads/2020/01/track1.txt

http://www.fangtax.com/wp-content/uploads/2020/01/track2.txt

至于上述文本文件中的数字是什么含义,可以简单解释一下:我们定义了一种保存乐谱的方式,就是每2行数字表示一个音符;第一个数字表示这个音符的高低,60 为中央C,61为#C,62为D,59为低八度B,依此类推,0代表休止符;第二个数字表示音符时值,1代表1拍,0.5代表半拍,依次类推。

搭建场景

舞台的背景并不重要,我们可以随意选择。本程序需要 2个角色来演奏不同的声部,角色选择什么形象也不重要,我们选择了默认的小猫,以及添加了另一个内置角色 —— 螃蟹 crab。

然后,我们在小猫的代码空间里,在“变量”分组积木箱中点击“建立一个变量”,并选择“仅适用于当前角色”,新建变量 i,如下图:

Scratch小游戏知更鸟罗宾第1步

再新建变量 n,也是要“仅适用于当前角色”。

之后,再到螃蟹的代码空间中,重复上述操作,也建立“仅适用于当前角色”(螃蟹)的 i 和 n。

接下来,创建 2个列表 track1,track2,方法在前几集已经有过介绍,这里不再重复。建好之后,积木箱如下图所示。

Scratch小游戏知更鸟罗宾第2步

可以按开篇图的方式,有条理地摆放各个变量、列表和角色。

将 track1.txt 导入 track1 列表中,方法在上一集已经介绍过,就是在舞台中的列表上点鼠标右键、再点“导入”,并选择相应的文件。

最后,将 track2.txt 导入 track2 列表中。

代码搭建

在左侧积木分组栏下方,点“添加扩展”按钮,选择“音乐”扩展。之后,先搭建小猫的代码:

Scratch小游戏知更鸟罗宾第3步

共有 22块积木,相信对已经追到这集的小朋友来说,并不算太难哦。

对于螃蟹的积木,我们可以偷个大懒 —— 直接把小猫代码空间里的整块代码块,用鼠标拖着开头第一块积木,拖到“角色浏览器”里的螃蟹的图标上,如下图所示:

Scratch小游戏知更鸟罗宾改造1

这样,我们给小猫编的代码,就复制给了螃蟹。

之后,对螃蟹的代码稍加修改,将 4处 “track1” 改为 “track2”:

Scratch小游戏知更鸟罗宾改造2

这样就大功告成了。

运行

点击绿旗子,听听是计算机弹的好,还是你弹的好呢?

计算机虽然弹得熟练,但是没有你有感情哦。

对于高年级的小朋友,如果有兴趣,你们还可以深入研究一下本程序曲谱文件的格式含义,自己编码甚至创作一些其他曲子,可以选择不同的乐器音色哦。

讲解

本程序和上一集的课文朗读机,从本质上来讲十分类似,都是将外部文件的数据导入列表,在程序中遍历列表,并根据每一次取到的数据,播放相应的语音/音符。只是在本集中,我们每2行代表一个音符,因此,“遍历”重复执行的次数是列表总行数除以2,而每次循环内要将指针变量 i 增加 2次。

发表评论

邮箱地址不会被公开。