音樂傳球遊戲
這篇教學會使用 Scratch 的角色造型、清單和廣播,搭配聲音的播放與暫停功能,實作團康裡常見的「音樂傳球遊戲」遊戲。
快速導覽:
音樂傳球遊戲怎麼玩?
「音樂傳球遊戲」是常見的團康遊戲,玩法就是所有人圍成一個圈,其中一個人拿著一顆球 ( 或其他物品 ),音樂開始時往左或往右傳,音樂停止時「手上有球的人」就要接受處罰。
繪製角色
使用繪畫的方式建立角色「music」,負責顯示音樂的歌名,以及播放不同的音樂曲目,角色造型使用文字呈現音樂名稱,造型名稱使用「音樂名稱」。
使用繪畫的方式建立角色「btn_select」,負責切換音樂,以及呈現目前音樂的狀態,角色共有三個造型,造型名稱 green 表示準備開始或暫停中 ( 點擊後會開始播 ),造型名稱 red 表示正在播放,造型名稱 gray 表示尚未選取該音樂。
使用繪畫的方式建立角色「btn_slay」,負責播放音樂或暫停音樂,角色共有三個造型,造型名稱 start 點擊後會開始播,造型名稱 continue 表示音樂暫停,點擊後會繼續播,造型名稱 playing 表示音樂正在播,點擊後音樂會暫停。
新增 min 和 max 兩個變數,並按照下圖,將兩個變數和三個角色排列在舞台上,在變數上點擊右鍵選擇「滑桿」,將變數設定為滑桿顯示模式。
上傳音樂
點擊「music」角色,切換到「音效」頁籤,使用上傳的方式上傳音樂,設定「音樂名稱」與「造型名稱」相同,舉例來說如果有四首音樂,就會有四個造型,且造型名稱和音樂名稱完全相同。
程式原理 ( music 音樂 )
編輯「music」角色程式,建立「建立音樂清單」函式,勾選「執行完畢後再更新畫面」。
參考「使用造型名稱建立清單」,使用「建立音樂清單」函式將造型名稱建立為清單,並在點擊綠旗時執行函式,新增 music_name 變數紀錄目前的音樂名稱,完成後發送 start 廣播訊號。
按照下圖建立四個接收廣播的機制,機制說明如下:
接收的廣播訊號 | 說明 |
---|---|
new | 切換新的音樂,停止播放所有音樂,等待點擊按鈕開始。 |
go | 從頭開始播放指定音樂。 |
play | 播放正在暫停中的音樂。 |
pause | 暫停音樂,使用「音樂播放、暫停、繼續播放、停止」的做法。 |
程式原理 ( btn_select 選擇音樂 )
編輯「btn_select」角色程式,建立「建立分身」函式,勾選「執行完畢後再更新畫面」。
點擊綠旗時隱藏角色,接收廣播 start 時執行函式 ( 目的在於確保 music_list 的內容完成後才建立分身 ),「建立分身」函式內容會根據 music_list 的長度,透過重複迴圈的方式,幾首音樂就建立幾個分身。
建立 name_local 變數,將變數設定為「僅適用當前角色」的區域變數。
設定產生每個分身時,將全域變數 n 增加 1,並根據當下的 n,設定區域變數 name_local 為指定的清單項目,讓每個分身都有不同的 name_local 數值,接著設定點擊分身時,將變數 music_name 設定為這個分身的 name_local 數值。
建立接收廣播 new、go、play 和 pause 的機制,當收到 new 時,先將所有分身改成灰色,再根據 music_name 和每個分身的 name_local 對照,如果相等就將這個分身改成綠色。
程式原理 ( btn_play 播放音樂 )
編輯「btn_play」角色程式,設定不同造型時的點擊行為,如果是 start 就發送 go 和切換為 playing,如果是 playing 就發送 pause 並切換為 continue,如果是 continue 就發送 play 和切換為 playing。
新增「倒數幾秒」函式,負責處理倒數結束後音樂暫停的邏輯。
建立接收廣播 new、go、play 和 pause 的機制,new 和 go 都會中止這個角色的重複迴圈,play 和 pause 則會執行唸出倒數秒數的程式邏輯。
效果展示
範例解答
範例解答:Scratch 教學 - 音樂傳球遊戲
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~