搜尋

音樂傳球遊戲

這篇教學會使用 Scratch 的角色造型、清單和廣播,搭配聲音的播放與暫停功能,實作團康裡常見的「音樂傳球遊戲」遊戲。

快速導覽:

音樂傳球遊戲怎麼玩?

「音樂傳球遊戲」是常見的團康遊戲,玩法就是所有人圍成一個圈,其中一個人拿著一顆球 ( 或其他物品 ),音樂開始時往左或往右傳,音樂停止時「手上有球的人」就要接受處罰

Scratch 教學 - 音樂傳球遊戲

繪製角色

使用繪畫的方式建立角色「music」,負責顯示音樂的歌名,以及播放不同的音樂曲目,角色造型使用文字呈現音樂名稱,造型名稱使用「音樂名稱」

Scratch 教學 - 音樂傳球遊戲 - 顯示音樂的歌名

使用繪畫的方式建立角色「btn_select」,負責切換音樂,以及呈現目前音樂的狀態,角色共有三個造型,造型名稱 green 表示準備開始或暫停中 ( 點擊後會開始播 ),造型名稱 red 表示正在播放,造型名稱 gray 表示尚未選取該音樂

Scratch 教學 - 音樂傳球遊戲 - 切換音樂,以及呈現目前音樂的狀態

使用繪畫的方式建立角色「btn_slay」,負責播放音樂或暫停音樂,角色共有三個造型,造型名稱 start 點擊後會開始播,造型名稱 continue 表示音樂暫停,點擊後會繼續播,造型名稱 playing 表示音樂正在播,點擊後音樂會暫停

Scratch 教學 - 音樂傳球遊戲 - 播放音樂或暫停音樂

新增 min 和 max 兩個變數,並按照下圖,將兩個變數和三個角色排列在舞台上,在變數上點擊右鍵選擇「滑桿」,將變數設定為滑桿顯示模式

Scratch 教學 - 音樂傳球遊戲 - 將變數設定為滑桿顯示模式

上傳音樂

點擊「music」角色,切換到「音效」頁籤,使用上傳的方式上傳音樂,設定「音樂名稱」與「造型名稱」相同,舉例來說如果有四首音樂,就會有四個造型,且造型名稱和音樂名稱完全相同。

Scratch 教學 - 音樂傳球遊戲 - 將變數設定為滑桿顯示模式

程式原理 ( music 音樂 )

編輯「music」角色程式,建立「建立音樂清單」函式,勾選「執行完畢後再更新畫面」。

Scratch 教學 - 音樂傳球遊戲 - 建立「建立音樂清單」函式

參考「使用造型名稱建立清單」,使用「建立音樂清單」函式將造型名稱建立為清單,並在點擊綠旗時執行函式,新增 music_name 變數紀錄目前的音樂名稱,完成後發送 start 廣播訊號。

Scratch 教學 - 音樂傳球遊戲 - 將造型名稱建立為清單

按照下圖建立四個接收廣播的機制,機制說明如下:

接收的廣播訊號 說明
new 切換新的音樂,停止播放所有音樂,等待點擊按鈕開始。
go 從頭開始播放指定音樂。
play 播放正在暫停中的音樂。
pause 暫停音樂,使用「音樂播放、暫停、繼續播放、停止」的做法。

Scratch 教學 - 音樂傳球遊戲 - 將造型名稱建立為清單

程式原理 ( btn_select 選擇音樂 )

編輯「btn_select」角色程式,建立「建立分身」函式,勾選「執行完畢後再更新畫面」。

Scratch 教學 - 音樂傳球遊戲 - 建立「建立分身」函式

點擊綠旗時隱藏角色,接收廣播 start 時執行函式 ( 目的在於確保 music_list 的內容完成後才建立分身 ),「建立分身」函式內容會根據 music_list 的長度,透過重複迴圈的方式,幾首音樂就建立幾個分身

Scratch 教學 - 音樂傳球遊戲 - 建立「建立分身」函式

建立 name_local 變數,將變數設定為「僅適用當前角色」的區域變數。

Scratch 教學 - 音樂傳球遊戲 - 僅適用當前角色

設定產生每個分身時,將全域變數 n 增加 1,並根據當下的 n,設定區域變數 name_local 為指定的清單項目,讓每個分身都有不同的 name_local 數值,接著設定點擊分身時,將變數 music_name 設定為這個分身的 name_local 數值

Scratch 教學 - 音樂傳球遊戲 - 讓每個分身都有不同的 name_local 數值

建立接收廣播 new、go、play 和 pause 的機制,當收到 new 時,先將所有分身改成灰色,再根據 music_name 和每個分身的 name_local 對照,如果相等就將這個分身改成綠色

Scratch 教學 - 音樂傳球遊戲 - 接收廣播 new、go、play 和 pause 的機制

程式原理 ( btn_play 播放音樂 )

編輯「btn_play」角色程式,設定不同造型時的點擊行為,如果是 start 就發送 go 和切換為 playing,如果是 playing 就發送 pause 並切換為 continue,如果是 continue 就發送 play 和切換為 playing。

Scratch 教學 - 音樂傳球遊戲 - 設定不同造型時的點擊行為

新增「倒數幾秒」函式,負責處理倒數結束後音樂暫停的邏輯。

Scratch 教學 - 音樂傳球遊戲 - 建立「倒數幾秒」函式

建立接收廣播 new、go、play 和 pause 的機制,new 和 go 都會中止這個角色的重複迴圈,play 和 pause 則會執行唸出倒數秒數的程式邏輯。

Scratch 教學 - 音樂傳球遊戲 - 設定不同造型時的點擊行為

效果展示

Scratch 教學 - 音樂傳球遊戲 - 效果展示

範例解答

範例解答:Scratch 教學 - 音樂傳球遊戲

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

Scratch 教學

基本介紹

關於 Scratch 使用 Scratch 3 註冊與登入 操作介面 我的東西

圖形與聲音

繪製造型&背景 編輯音效

程式積木

積木種類 動作 外觀 音效 事件 控制 偵測 運算 變數 清單 函式積木

擴充功能

音樂 畫筆 視訊偵測 文字轉語音 翻譯

技巧&觀念

全域變數、區域變數 深入理解區域變數 控制指定分身 控制所有分身的方法 雲端變數 雲端變數記錄文字 變數串接文字 判斷英文字母大小寫 中斷與停止程式 廣播訊息並等待 鍵盤與滑鼠 滑鼠點擊與長按 偵測所有鍵盤按鍵 點擊隱藏的角色 突破角色尺寸限制 角色與舞台邊界 重複積木的等待時間 音樂暫停與繼續播放 使用造型名稱建立清單 使用造型代替變數 文字轉清單 清單合併為文字 判斷兩個清單是否相同 複製清單、反轉清單 清單數字排序 清單最大值最小值

入門範例

鍵盤控制貓咪 指向中間的箭頭 水果音樂鋼琴 貓咪的影分身之術 貓咪的細胞分裂 螃蟹跑來跑去 吃水果 摸蝴蝶 小狗追棒球 魚兒水中游 小鳥往前飛 舞棍阿伯 小時鐘 搖骰子 轉動的眼球 抽獎輪盤 大樂透電腦選號 卡牌抽籤 ( 20 中 1 ) 移動到邊緣切換場景 人物依序跳舞 ( 廣播 ) 按鈕控制貓咪 ( 廣播 )

進階範例

貓咪跑步 ( 連續背景 ) 貓咪跑步 ( 超長背景 ) 大型數字 ( 圖形數字 ) 拖拉怪獸碰撞牆壁 鍵盤鋼琴 ( 記錄音符 ) 中文字逐字稿 英文字逐字稿 計算機 1 ( 顯示數字 ) 計算機 2 ( 加減乘除 ) 雲端聊天室 音樂播放器 推貓咪 ( 視訊偵測 ) 圍捕小魚 ( 視訊偵測 ) 戳泡泡 ( 視訊偵測 )

視覺特效範例

視差效果 水中吐泡泡 雪花隨風飄 鍵盤鋼琴 ( 音符動畫 ) 無限循環畫中畫 水底探照燈 狙擊望遠鏡 ( 兩倍變焦 ) 貓咪萬花筒 仙女棒 ( 光跡效果 ) 駭客任務背景特效 放煙火 1 ( 往上發射 ) 放煙火 2 ( 爆炸效果 )

繪圖範例

鏡射畫圖 ( 對稱圖形 ) 小畫家 ( 舞台上畫圖 ) 記錄畫圖軌跡 繪製圓形 繪製橢圓形 繪製立方體 ( 會動 ) 繪製正多邊形 繪製正多角星形 ( 單純 ) 繪製正多角星形 ( 多線 ) 繪製拋物線 繪製折線圖 繪製圓餅圖 繪製圓餅圖 ( 指示線 ) 蜘蛛結網 ( 八邊形網 ) 繪製舞台方格 繪製正弦波形 ( sin ) 正弦波毛毛蟲動畫 顯示聲波圖形

物理&模擬範例

鐘擺運動 簡單磁鐵效果 兩個磁鐵的磁力線 立體空間 ( 三度空間 ) 循跡移動 拋物線發射炮彈 地球繞著太陽轉 彈跳的籃球 電風扇 ( 控制強度 ) 拉不走的彈力球 慣性移動 ( 滑鼠 ) 慣性移動 ( 鍵盤 )

入門遊戲範例

猴子接香蕉 打地鼠 打地鼠 ( 體感視訊偵測 ) 刮刮樂 吹風機吹頭髮 太空狗閃躲隕石 九九乘法測驗 英文單字測驗 釣魚遊戲 拍西瓜 ( 儲存最高分 ) 寶可夢猜猜我是誰 ( 基本 ) 形狀配對拼圖 台灣地圖拼圖 英文打字機 英文打字機 ( 判斷大小寫 ) 射擊外星人 猜數字 ( 猜大小 ) 猜數字 ( 幾 A 幾 B ) 連連看 ( 產生器 ) 連連看

進階遊戲範例

青蛙過河 青蛙過馬路 反彈球 ( 乒乓球 ) 打磚塊 狙擊氣球 ( 兩倍變焦 ) Flappy Bird Flappy Bird ( 聲控版 ) 走迷宮 ( 基本 ) 大型迷宮 ( 鍵盤控制 ) 大型迷宮 ( 滑鼠控制 ) 翻卡記憶遊戲 翻卡記憶遊戲 ( 改良版 ) 井字棋 ( 圈圈叉叉 ) 九宮格拼圖 九宮格拼圖 ( 改良版 ) 音階記憶 貪吃蛇 ( 分身版 ) 貪吃蛇 ( 畫筆版 ) 小雞下樓梯 拉霸機

團康遊戲範例

搖骰子 ( 1~3 個 ) 比手畫腳 ( 猜動物 ) 音樂傳球遊戲 大聲公 ( 比賽誰的氣長 ) 抽籤 ( 可調整中籤數量 ) 轉盤指針 ( 指到誰就當鬼 ) 倒數計時器 ( 基本版 ) 倒數計時器 ( 大數字版 )

遊戲設計技巧

角色 ( 地上移動 ) 角色 ( 蹲下、左右轉 ) 角色 ( 跳耀、兩段跳 ) 角色 ( 牆壁、爬牆 ) 地圖 ( 清單轉換 ) 地圖 ( 二維陣列 ) 地圖 ( 控制移動 ) 地圖 ( 牆壁碰撞偵測 ) 地圖 ( 吃東西偵測 ) 俄羅斯方塊 ( 角色與背景 ) 俄羅斯方塊 ( 移動與碰撞 ) 俄羅斯方塊 ( 放置方塊 ) 俄羅斯方塊 ( 消除完成方塊 ) 俄羅斯方塊 ( 下個形狀 )