MISSION 07 · 第七堂課

廣播功能一個通知,角色一起行動!

舞台倒數結束,怎麼告訴猴子和香蕉?
學會發送與接收廣播,讓遊戲在時間到時一起收尾。

認識廣播
01
像學校的下課廣播

廣播,是送給大家的通知

學校廣播說「下課了」,同學聽到後會收拾文具。Scratch 也能發通知:舞台說「遊戲結束」,香蕉和猴子收到後,各自執行自己的程式。

發送端:舞台廣播訊息 遊戲結束啦
接收端:香蕉、猴子當收到訊息 遊戲結束啦

發送:我來通知大家

在黃色「事件」分類找「廣播訊息」,新增一個訊息,命名為 遊戲結束啦。訊息名稱用來約定「這個通知代表什麼」。

接收:聽到後做自己的事

在角色身上放「當收到訊息」,選同一個 遊戲結束啦。下面接的積木,就是這個角色收到通知後要做的事。

收到同一個通知,可以做不同的事。 香蕉停止掉落;猴子停止移動並說出分數。沒有接上「當收到訊息」的角色,不會因為廣播就自動停止。廣播也不會發出聲音;猴子的「說出」會顯示對話泡泡。
先想想:香蕉也要說出分數嗎?

不用。兩個角色收到相同訊息,但各自接不同的積木。只有猴子的接收程式需要「說出」。

02
先看一次,再回 Scratch 動手做

試試看:一個通知,兩個反應

廣播示意 · 這是教學演示,不會改動你的 Scratch 作品,示範得分固定為 300。

舞台計時器:—
香蕉

等待綠旗

猴子

等待綠旗

先按綠旗開始,再觀察倒數結束時會發生什麼事。

1
任務一 · 程式放在舞台

倒數結束,由舞台廣播

點選 Scratch 右下角的「舞台」。建立橘色變數「計時器」,並讓它顯示在舞台上。本課依最新積木使用 8 秒倒數,計時器歸零後才廣播。如果作品介紹寫 10 秒,請同步修正介紹,或把起始值與重複次數一起改為 10。

  1. 綠旗開始,把計時器設為 8。

    讓每一場遊戲都重新開始倒數。

  2. 重複 8 次:等待 1 秒,計時器改變 -1。

    兩塊都要放進重複積木裡,才會一秒減一。

  3. 迴圈結束後,廣播 遊戲結束啦。

    廣播放在重複積木外面、下方,才不會第一秒就結束遊戲。

當 ⚑ 被點擊
變數 計時器 ▾ 設為 8
重複 8 次
等待 1 秒
變數 計時器 ▾ 改變 -1
↶
廣播訊息 遊戲結束啦 ▾
任務一先測什麼? 按綠旗,看數字從 8、7、6……減到 0。此時角色可能還會動,因為接收端要在任務二才加入。這裡的「計時器」是你建立的變數,不是「偵測」分類裡會自動往上計時的內建計時器。
2
任務二 · 兩個角色各放一串接收程式

收到廣播後,各自完成任務

先選取香蕉角色

香蕉:停止掉落

在香蕉身上另外放一串「當收到訊息 遊戲結束啦」,下面接「停止」,下拉選單選「這個物件的其它程式」。這樣就會停止香蕉原本正在執行的掉落與計分迴圈。

當收到訊息 遊戲結束啦 ▾
停止 這個物件的其它程式 ▾
再選取猴子角色

猴子:先停下來,再公布成績

在猴子身上另外放一串接收程式。先停止原本正在執行的移動程式,再用「說出」顯示「你好棒!你獲得了(得分)分數」。括號的位置要放入真正的「得分」變數。

當收到訊息 遊戲結束啦 ▾
停止 這個物件的其它程式 ▾
說出 字串組合 你好棒!你獲得了字串組合 得分 分數

為什麼用兩個「字串組合」?

一個只能接兩段內容。先把「得分」和「分數」接起來,再接上開頭「你好棒!你獲得了」。例如得分是 300,就會顯示「你好棒!你獲得了300分數」。括號是填入變數的位置,不必另外打入。

停止其他程式,這串還能繼續

選「這個物件的其它程式」會停掉猴子正在跑的其他程式,保留目前這串接收程式,所以接下來仍能「說出」。不要選「停止全部」或「停止這個程式」。

原本用鍵盤操控猴子,要注意什麼?

停止其他程式可以停止正在跑的滑鼠追蹤迴圈,但結束後再按方向鍵,按鍵事件仍可能重新觸發。鍵盤版可加一個共用變數「遊戲進行中」:綠旗設為 1;收到 遊戲結束啦 時先設為 0;方向鍵移動積木外加上「如果 遊戲進行中 = 1」。這樣遊戲結束後,按鍵也不會再移動。

✓
一起測一場完整的遊戲

我的廣播任務完成了嗎?

沒有成功?用這張表找原因
看到的狀況檢查這裡
一秒就結束廣播應該在重複 8 次的外面。
倒數瞬間歸零迴圈裡要有「等待 1 秒」。
時間到,香蕉還在掉香蕉要有接收程式,且訊息名稱相同。
猴子沒說話停止選「這個物件的其它程式」,不要停止全部或目前這串。
泡泡只有「得分」兩個字放入橘色「得分」變數,不是手打「得分」。
想在 30 秒才結束「設為 8」與「重複 8 次」都改成 30。
說說看,你學到了什麼? 誰負責發送廣播?誰負責接收?為什麼同一個訊息能讓香蕉和猴子做不同的事?試著用自己的話解釋給同學聽。
↗
對照老師的原始範例

老師的最新作品圖:聚焦結束廣播

圖片是包含第八堂起始頁的完整作品;本課先看舞台最後的廣播,以及猴子、香蕉的結束接收程式。「開始遊戲」與按鈕的安排,留到第八堂再學。

原圖的猴子先說出文字再停止,而且沒有句尾「分數」。本課依任務要求調整成「先停止、再報分」,並用兩個字串組合補齊完整句子;請以本課上方的猴子積木為準。

舞台:倒數結束後廣播
舞台:倒數結束後廣播,訊息名稱為 遊戲結束啦,點擊可放大。
猴子:收到結束訊息後報分與停止
猴子:收到結束訊息後報分與停止,訊息名稱為 遊戲結束啦,點擊可放大。
香蕉:收到結束訊息後停止
香蕉:收到結束訊息後停止,訊息名稱為 遊戲結束啦,點擊可放大。
延伸圖片:開始按鈕在第八堂會學到什麼?

開始按鈕會廣播「開始遊戲」,與本課的「遊戲結束啦」是兩個不同訊息。本課不用先完成按鈕,接著到第八堂製作起始頁。

第八堂延伸:開始按鈕在綠旗時顯示,被點擊後廣播開始遊戲並隱藏。

前往第八堂:遊戲起始頁 →