#少儿编程#
在我们通过音乐模块实现了通过键盘弹琴的程序,不过如果我们想放一首现在自己想写一首歌,如何通过Scratch来播放呢?那就要用到Scratch的列表了。
什么是列表
Scratch中的列表可以看作是一个只有一列的表格,在Scratch的四级考纲中,考点链表就是Scratch中的列表。
如果我们只记录一个值时,变量是最合适的。但如果我们想记录很多值呢?如果还使用变量,就会因为变量太多而变得混乱,这个时候列表就最合适了。
举个例子:比如我们想记录自己班上同学的名字,如果一个名字一张纸,那是不是会很乱?但如果我们把同学名字都记录在一张纸上,是不是会很方便呢。记录所有同学名字的纸就可以看作是列表。
列表就是把相同类型的记录保存在一个地方。
建立列表
①在变量模块中,有一个“建立一个列表”的按钮(图1)。
图1②点击这个按钮,会弹出一个“新建列表”的对话框(图2),在黄色输入框里写上列表名字,这里我新建了一个叫“音符”的列表。
图2③点击“确定”后,会出现一堆新积木(图3),同时舞台区会有个“音符”空列表(图4)
图3图4④在列表里直接添加内容。点击列表左下角的“+”号(图5),列表里会出现一个红色的输入框,输入列表内容,敲回车,可以接着输入。
图5我们可以通过列表来记录歌谱和节拍,然后通过音乐模块播放。下面我们就来看看Scratch如何实现这个功能。由于我不会写歌,只好找一个现成的曲谱,图6是梁祝的曲谱,我们现在就来用列表和音乐模块来播放这段音乐,乐器选择钢琴。
图61)分析任务要求
任务角色:由于没有特别要求,所以使用默认角色
任务背景:由于没有特别要求,使用默认背景
任务内容:用钢琴演奏梁祝
2)程序设计
曲谱包含两个元素,音符和节拍。所以这个练习最主要就是创建两个列表,分别是音符列表和节拍列表,将曲谱按照顺序输入到这两个列表里。
程序本身很简单,流程图如图7。
图7①首先,设置演奏速度和演奏乐器
②然后,重复执行音乐模块里的“演奏音符”积木来顺序演奏列表里的音符,重复次数为列表的长度,即行数。
3)使用的主要技能
使用变量模块里的“建立列表”按钮创建两个列表:音符和节拍(图8)
图8使用音乐模块里图9的积木来设置乐器和演奏速度
图9使用控制模块里的“重复执行”积木(图10)来控制演奏音符的次数
图10那么到底演奏音符要多少次呢?一般来说,是一共有多少个音符,就演奏多少次。由于我们已经将曲谱的音符都输入到“音符”列表里了,所以可以使用变量模块里求列表项目数的积木(图11)来控制具体演奏多少次
图11使用音乐模块里的“演奏音符”积木(图12)来演奏曲目
图12由于我们有音符和节拍列表了,那么具体演奏哪个音符,执行多少拍,就通过变量模块里图13的积木来取列表里的值
图13那么到底取列表里的第几个音符呢?那就用变量模块里图14的积木来控制了
图14创建好变量后,一般在程序里,会使用上图第一个积木来设置初始值,然后每次演奏音符,都会使用上图第二个积木来让变量的值加1,即下一个音符。
4)Scratch编程实现
第一步:创建列表
创建两个列表:音符和节拍(图15)。
图15音符列表我们将图6的梁祝琴谱里的音符所对应的数字依次输入到音符列表里。图16是整理出来的音符对应的数字。
图16其实音符和数字的对应关系也很好找,图17是音乐模块里的演奏音符积木,在设置音符时,会弹出一个小钢琴,用鼠标点击琴键,除了有声音,还会有相对应的数字(红圈内)。
图17这里我要特别说明一下,这首谱子没有遇到休止符,但很多谱子会有,我们一般在音符列表里会用0来表示休止符。
节拍列表一首曲子光有音符没用,还要有节拍。很抱歉,笔者不懂这些音乐知识,对于歌曲节拍的值我是这么定义的:
我们将谱子上每个音符的节拍依次输入到节拍列表里,这里一定要注意,音符和节拍一定要一一对应,有多少行音符,就有多少行节拍。
图18是输入了一小段音符和节拍。
第二步:创建变量
我们需要有一个变量来记录我们已经演奏到第几个音符了,创建变量i(图19),全局变量或局部变量都可以。怎么创建这里就不再说了,不记得的可以看我前面的文章。
图19第三步:编程
将角色或者舞台作为当前编程对象都可以,这里我们就用角色作为编程对象(图20)。
图20代码如图21
图21①当程序运行时,首先设置演奏速度,数字越大,说明速度越快,这里我设为90
②然后设置演奏乐器,这里我们设为钢琴
③初始化变量i,变量i是用来记录已经演奏第几个音符了,初始值设为0
④使用控制模块里的循环体来重复执行演奏积木,循环的次数为音符列表的项目数,就是音符的个数
⑤一开始i=0,将i增加1,即0+1=1,也就是说这时i=1,然后执行演奏积木,演奏的是音符列表第1项,节拍也是节拍列表第1项;
由于列表还没结束,还要继续演奏,那么再执行这个循环体,此时i=1,执行将i增加1,那么i就等于2,也就是说,后面执行演奏积木,演奏的是第2个音符,节拍是第2个节拍,依次类推。
⑥直到执行的次数为列表的项目数,就结束循环。
第四步:保存程序
大家可以测试一下,由于这个练习只有声音,我就不贴动图了。
这个练习我们主要是知道了什么是列表,通过列表来记录谱子和节拍,你也可以用这种方式自己写首曲子。不过这样记录一首曲子也不容易,那么能不能一首曲子我就只写一次,以后反复用?这当然可以,我就会告诉大家怎么做。
原创不易,请勿抄袭。欢迎大家