SCRATCH 三国小游戏

第7集 周郎古琴曲

作者:杨振鹏   日期:2020/9/11 更新

SCRATCH 三国小游戏 周郎古琴曲

游戏介绍:

诸葛亮出山后,刘备安排他去江东说服孙权联手对付曹操。到了江东,诸葛亮先去拜访了仰慕已久的周瑜。

周瑜是江东第一帅哥、才子,也是东吴水军的大统领。周瑜擅长弹琴,别人弹的曲子如果出现了一个小错,周瑜都会马上纠正,人称“曲有误,周郎顾”。

看到诸葛亮来了,周瑜给他弹了一首曲子,小朋友们听听周瑜弹的是什么曲子呢?

代码量:25 块积木

素材

周瑜:Zhou

周瑜

下载周瑜、诸葛亮的角色文件,以及 3 段乐谱。

舞台背景

Scratch 内置背景 Theater。

素材来源:周瑜造型改编自Scratch内置角色Dorian. 读者还可以添加一些无代码的观众。

添加扩展:音乐

建立一个列表:track1

创建变量:在变量栏目中,通过“建立一个变量”按钮,依次创建变量 i、n、t。

Scratch Game Play Music, make a list

将乐谱数据导入列表:首先准备乐谱数据,可使用我们附带的 ragtime.txt,该文件内容如下:

ragtime.txt (以下内容中 “ / ” 代表换行,共68行)A little bit of rag by John Thompson

69 / 1 / 72 / 2 / 69 / 1 / 65 / 4 / 64 / 1 / 67 / 2 / 64 / 1 / 60 / 4 / 69 / 1 / 72 / 2 / 69 / 1 / 65 / 1 / 0 / 1 / 69 / 1 / 0 / 1 / 67 / 8 / 69 / 1 / 72 / 2 / 69 / 1 / 65 / 4 / 64 / 1 / 67 / 2 / 64 / 1 / 60 / 4 / 72 / 1 / 74 / 2 / 72 / 1 / 69 / 1 / 65 / 1 / 67 / 1 / 0 / 1 / 65 / 4 / 77 / 1 / 0 / 3

在 track1 列表上点右键,然后选择 import 菜单项导入上边的文件。

代码

Zhou:

Scratch Game Play Music, code

讲解

本程序是将外部文件的数据导入列表,在程序中遍历列表,并根据每一次取到的数据,播放相应的音符。

在我们准备的ragtime.txt文件中,我们用每2行数字代表一个音符。其中,第一个数字表示这个音符的高低,60 为中央C,61为#C,62为D,59为低八度B,依此类推,0代表休止符;第二个数字表示音符时值,1代表1拍,0.5代表半拍,依次类推。 “69 / 1 / ”,就是1拍的la;“72 / 2 / ”,就是2拍的高音do。

对于高年级的小朋友,如果有兴趣,你们可以仔细研究一下本程序曲谱文件的格式含义,这样就可以自己编码甚至创作一些其他曲子,让周瑜演奏出来。

相信不少小朋友已经听出来了,这个ragtime.txt是《小汤普森3》里《小雷格泰姆》的主旋律。不过你马上就会问,怎么没有双音,也没有伴奏声部,听起来就像傻瓜弹的一样,难道周瑜就是这个水平吗? 其实,主要是Scratch的音乐扩展只能同时演奏1个音符。为了同时演奏多个音符,我们需要多个线程协同演奏,代码量就会增大不少。例如,如果你想添加伴奏声部,那就在诸葛亮的代码空间中,编写一段同样的程序就可以了。只是记得再添加一个track2列表,导入伴奏声部的乐谱。在诸葛亮的代码中,要把所有的track1替换为track2,变量i、n、t替换为i2、n2、t2。这样,点击绿旗子时,就能同时演奏2个声部了。

另附一首加勒比海盗主题曲《He’s a pirate!》的乐谱:HeIsAPirate.txt。

下一集 草船借箭

上一集