《兒歌彈奏》用Scratch彈奏兒歌
第一部分??作品預(yù)覽
《兒歌彈奏》操作指南:
1、點(diǎn)擊綠旗,開始彈奏;
2、滑塊落在哪個(gè)按鍵上,就按下哪個(gè)數(shù)字鍵;
3、可以在滑塊的代碼里更換樂器種類;
4、導(dǎo)入新的按鍵列表和節(jié)拍列表,可以更換歌曲。

作品下載鏈接:
(源代碼)鏈接:https://pan.baidu.com/s/1nH0aqrWfOEgIFpt5R94xtw?pwd=36m6?
提取碼:36m6
(改良版)鏈接:https://pan.baidu.com/s/1sDtj9C26jgQS3Mv2z4AApw?pwd=sw8q?
提取碼:sw8q
第二部分??任務(wù)解讀
一、解讀鍵盤角色:
鍵盤角色的主要作用就是擺放數(shù)字按鍵,每一個(gè)按鍵上擺放一個(gè)數(shù)字,需要執(zhí)行的唯一任務(wù)就是初始化操作:設(shè)定好大小、位置以及方向,可以根據(jù)個(gè)人喜好進(jìn)行調(diào)整,也可以參照源碼進(jìn)行設(shè)置。
注意:Scratch默認(rèn)是沒有加載音樂模塊的,需要我們自己點(diǎn)擊左下角的“添加拓展”按鈕,然后在新的窗口界面中,點(diǎn)擊“音樂”模塊(第一個(gè)),這樣就添加好了音樂模塊。
二、解讀滑塊角色:
滑塊角色就像指揮棒一樣,落在哪個(gè)按鍵上,就得及時(shí)按下相應(yīng)的按鍵,按早了、按晚了或者按錯(cuò)了,都不會(huì)彈出聲響?;瑝K角色主要有以下四項(xiàng)任務(wù):
1、初始化任務(wù):程序開始之后,設(shè)定滑塊大小,并且將顯示狀態(tài)設(shè)置成隱藏;然后設(shè)置樂器類型(默認(rèn)是鋼琴),將演奏速度設(shè)置成80(演奏快慢可以根據(jù)自身水平調(diào)節(jié));最后將得分(用于統(tǒng)計(jì)分?jǐn)?shù))變量設(shè)為0,將序號(用于標(biāo)識(shí)彈奏進(jìn)度)變量設(shè)為1。
2、克隆任務(wù):雖然滑塊角色只有一個(gè),但是可以同時(shí)出現(xiàn)多個(gè)滑塊,這種場景,通常使用克隆實(shí)現(xiàn)。在實(shí)際操作中,每落下一個(gè)滑塊,就得按下一個(gè)按鍵;逆向思考一下:只要有按鍵需要按下,就得出現(xiàn)滑塊,所以,克隆滑塊的數(shù)量由按鍵數(shù)量決定。
在執(zhí)行克隆操作之前,創(chuàng)建三個(gè)列表:按鍵、節(jié)拍和音符。參照樂譜(網(wǎng)絡(luò)自行搜索),將按鍵依次存入按鍵列表中(按鍵0表示停頓),將節(jié)拍存入節(jié)拍列表中(這里設(shè)定1拍停頓1秒,半拍停頓0.5秒,以此類推);這里使用C調(diào),音符從60開始,依次存入音符列表,具體設(shè)定可以參考源碼。
下面使用循環(huán)積木塊遍歷按鍵列表,在循環(huán)體內(nèi),需要判斷一下:如果按鍵等于0,表示停頓,否則,克隆一個(gè)滑塊,然后等待相應(yīng)的節(jié)拍,為了精準(zhǔn)控制克隆體,在克隆之前,將私有變量“克隆體編號”的值設(shè)置為變量“序號”’,每輪判斷之后,將變量“序號”增加1。
3、下落任務(wù):作為克隆體啟動(dòng)之后,滑塊開始不斷下落,豎直下落很容易實(shí)現(xiàn),問題是:怎么把滑塊放到對應(yīng)的數(shù)字按鍵上方?這里需要用到一個(gè)簡單的算法來確定X-坐標(biāo):-240 +?按鍵的“序號”項(xiàng) * 60,Y-坐標(biāo)設(shè)為180。當(dāng)滑塊接觸到鍵盤的時(shí)候,減緩下落速度,同時(shí)編寫消失代碼
4、彈奏任務(wù):當(dāng)滑塊下落到鍵盤上方剛與鍵盤接觸的時(shí)候,按下相應(yīng)的數(shù)字鍵,開始演奏相應(yīng)的音符。
三、解讀數(shù)字角色:
數(shù)字角色總共有三項(xiàng)任務(wù):
1、初始化操作:開始之后,設(shè)定大小、方向、造型、顯示狀態(tài),將“數(shù)字”變量設(shè)為1。
2、克隆自己7次:每次克隆之后,彈奏一下對應(yīng)數(shù)字的音符,然后將X-坐標(biāo)增加60。
3、按鍵效果:當(dāng)作為克隆體啟動(dòng)之后,判斷自己是否被按下,設(shè)置一下顯示特效(根據(jù)個(gè)人喜好設(shè)定)。
第三部分??代碼編寫




第四部分??探究與改良
一、效仿已有的按鍵列表和節(jié)拍列表,存入新的樂譜,彈奏一下。
二、作品中存在得分變量,但是沒有計(jì)分操作,如果按對一個(gè)鍵得10分,按錯(cuò)一個(gè)鍵扣5分,該怎么完善代碼?動(dòng)手試一下!
??編 者 寄 語?
關(guān)于探究改良部分,希望大家認(rèn)真思考!本文提供的作品源碼及改良源碼僅供參考,期待大家探究更優(yōu)的改良程序!
加油吧,后浪!
< 完 >
