MISSION 08 · 第八堂課

遊戲先別急著開始用廣播,做出你的起始頁!

按綠旗先看介紹,按「開始遊戲」才真正開玩。
先想想程式為什麼要搬家,再展開積木答案。

從思考開始
?
先預測:還沒讀完介紹,時間就沒了?

綠旗是準備,按鈕才是開始

先想一想,再動手試
  1. 如果倒數仍放在「當綠旗被點擊」下面,玩家閱讀介紹時,時間會不會一直減少?
  2. 只把猴子和香蕉隱藏,卻沒搬走移動與掉落程式,程式會停下來嗎?
  3. 玩家點擊開始按鈕後,要怎麼一次通知三個地方一起工作?

先說出你的預測,或在 Scratch 試一次,再展開下方答案。

想好了?展開暖身解答

綠旗會啟動所有綠旗程式,所以倒數和掉落也會立刻開始。「隱藏」只讓角色看不見,並不會停止它身上的程式。

把真正的遊戲程式搬到「當收到訊息 開始遊戲」下面;綠旗只做準備,按鈕廣播之後才開玩。

⚑ 綠旗:準備介紹頁▶ 按鈕:廣播「開始遊戲」🎮 角色與舞台:開始執行
1
任務一 · 在同一個舞台新增背景

製作「遊戲介紹」起始畫面

這裡要新增的是舞台的第二個「背景」,不用另外新增舞台。保留原本遊戲用的 Desert 背景,另做一張命名為「遊戲介紹」的背景。

先想一想,再動手試
  1. 介紹頁要告訴玩家哪些規則,才能讓他知道怎麼玩?
  2. 如果兩個背景都叫「背景1」,寫程式時容易選對嗎?
  3. 開始按鈕適合放在哪裡,才不會蓋住介紹文字?

先說出你的預測,或在 Scratch 試一次,再展開下方答案。

完成設計後,展開步驟與參考圖
  1. 選舞台,進入「背景」頁籤。

    新增或繪製介紹背景,重新命名為「遊戲介紹」。原本遊戲場景保留,範例名稱為 Desert。

  2. 用文字工具寫上規則。

    例如:滑鼠左右移動控制猴子;接到香蕉得 100 分;漏接扣 50 分;遊戲時間 10 秒。

  3. 預留開始按鈕的位置。

    文字要容易閱讀,按鈕要顯眼,避免蓋住規則。

兩張背景:遊戲介紹與 Desert · 點圖放大
兩張背景:遊戲介紹與 Desert
2
任務二 · 新增一個按鈕角色

按下開始,廣播後把自己藏起來

先想一想,再動手試
  1. 按鈕在介紹頁要顯示還是隱藏?遊戲開始後呢?
  2. 哪一塊事件積木能知道「這個角色被點擊」?
  3. 為什麼按鈕要廣播,而不是自己直接控制每個角色?

先說出你的預測,或在 Scratch 試一次,再展開下方答案。

試做後,展開按鈕的兩串程式

新增或繪製按鈕角色,命名為「開始按鈕」,造型寫上「開始遊戲」,再把它放在介紹頁適合的位置。

綠旗:讓按鈕回來

當 ⚑ 被點擊
顯示

點擊:通知大家開始

當角色被點擊
廣播訊息 開始遊戲 ▾
隱藏

廣播會通知所有接收「開始遊戲」的程式。按鈕隱藏後,玩家不會在遊戲中再次點它;下次按綠旗,按鈕又會顯示。

要用一般的「廣播訊息」。 不必使用「廣播並等待」;若等待接收端的無限迴圈結束,按鈕下方的「隱藏」可能一直等不到執行。
老師的開始按鈕程式:綠旗顯示,點擊後廣播開始遊戲並隱藏 · 點圖放大
老師的開始按鈕程式:綠旗顯示,點擊後廣播開始遊戲並隱藏
3
任務三 · 把啟動時機改成收到廣播

猴子、香蕉、舞台的程式要搬到哪裡?

先想一想,再動手試
  1. 猴子與香蕉在介紹頁應該做什麼?「顯示」要放在綠旗下,還是收到開始訊息後?
  2. 香蕉的「得分設為 0」是準備工作,還是必須一直執行的工作?
  3. 倒數要從玩家點按鈕時開始,原本的「重複倒數」應該搬到哪個事件下?
  4. 舞台能不能使用角色的「隱藏」積木?兩個背景該在什麼時候切換?

先說出你的預測,或在 Scratch 試一次,再展開下方答案。

先說出你的分工,再展開總整理
地方綠旗按下:準備收到「開始遊戲」:開玩
開始按鈕顯示由點擊事件廣播並隱藏自己
猴子隱藏、清掉上場泡泡定位、顯示、開始追蹤滑鼠
香蕉隱藏、得分歸零顯示、定位、掉落與計分
舞台換成「遊戲介紹」、計時器設為 10換成 Desert,再開始倒數
不是把所有程式一口氣搬走。 把「真正開始玩」的部分搬到接收端;把重設資料、隱藏角色等準備工作留在綠旗下。舞台不能用角色的「隱藏」,要用「背景換成」切換畫面。
猴子參考答案:先藏起來,收到訊息才移動

綠旗準備

當 ⚑ 被點擊
隱藏
說出 (留空白)

空白「說出」可以清掉上一場的得分泡泡;積木內不用打入「留空白」這幾個字。

原本移動程式搬到這裡

當收到訊息 開始遊戲 ▾
定位到 x: 21 y: -129
顯示
重複無限次
x 設為 鼠標的 x
↶

保留第七堂的遊戲結束接收程式:停止猴子的其他程式,再說出得分。介紹頁上沒有啟動滑鼠追蹤,猴子就不會提早移動。

鍵盤版也要加開關。 圖片裡左右鍵事件仍能隨時被觸發。可用「遊戲進行中」變數:綠旗設為 0,收到「開始遊戲」設為 1,收到結束訊息設為 0;方向鍵移動放進「如果 遊戲進行中 = 1」,避免介紹頁或結束後仍可移動。
猴子原圖:綠旗隱藏,收到開始遊戲才顯示與追蹤滑鼠 · 點圖放大
猴子原圖:綠旗隱藏,收到開始遊戲才顯示與追蹤滑鼠
香蕉參考答案:歸零留在綠旗,掉落改等開始訊息

綠旗準備

當 ⚑ 被點擊
隱藏
變數 得分 ▾ 設為 0

開始遊戲後,才啟動原本的掉落程式

當收到訊息 開始遊戲 ▾
顯示
定位到 x: 隨機取數 -200 到 200 y: 157
重複無限次
y 改變 -10
如果 y 座標 < -190 那麼
變數 得分 ▾ 改變 -50
定位到 x: 隨機取數 -200 到 200 y: 157
如果 碰到 猴子 ▾? 那麼
變數 得分 ▾ 改變 100
定位到 x: 隨機取數 -200 到 200 y: 157
↶

「碰到」要選你作品中的猴子角色名稱,原圖名稱是 Sprite1。保留第七堂收到結束訊息後「停止這個物件的其它程式」的那一串。

香蕉原圖:綠旗隱藏與歸零,開始訊息啟動掉落 · 點圖放大
香蕉原圖:綠旗隱藏與歸零,開始訊息啟動掉落
舞台參考答案:兩張背景如何替換?

老師提供的舞台答案:綠旗先切換到「遊戲介紹」並將計時器設為 8;收到「開始遊戲」後切換到 Desert,倒數 8 秒,再廣播「遊戲結束啦」。

老師的舞台答案:8 秒倒數,廣播遊戲結束啦 · 點圖放大
老師的舞台答案:8 秒倒數,廣播遊戲結束啦

下方保留本課的 10 秒改寫範例,方便對照介紹頁的規則。若照老師的 8 秒答案製作,請同步把介紹文字改成 8 秒,並讓猴子、香蕉接收「遊戲結束啦」。

綠旗:顯示介紹,不倒數

當 ⚑ 被點擊
背景換成 遊戲介紹 ▾
變數 計時器 ▾ 設為 10

收到開始訊息:切換遊戲背景並倒數

當收到訊息 開始遊戲 ▾
背景換成 Desert ▾
變數 計時器 ▾ 設為 10
重複 10 次
等待 1 秒
變數 計時器 ▾ 改變 -1
↶
廣播訊息 game over ▾

介紹頁切換到 Desert 的時機,是收到「開始遊戲」的時候。下次按綠旗,再切回介紹。這裡用一般「背景換成」即可;畫面切換與角色啟動都由「開始遊戲」訊息來協調。

兩種訊息,不同工作:「開始遊戲」負責開玩;「game over」負責結束。沿用第七堂的 game over 接收端。原圖叫「遊戲結束啦」,若要用這個名字,舞台、猴子、香蕉的結束訊息要一起改,不能混用。
讓規則與程式對得上。 原圖介紹寫 10 秒,舞台積木寫 8 秒。本課把「設為」與「重複次數」都統一成 10;若你想玩 8 秒,三個地方都一起改。
▶
先完成預測,再操作驗證

試試:綠旗之後,先別按開始

按綠旗後等幾秒,觀察有沒有倒數。再按開始按鈕,比較背景、按鈕與角色的變化。

教學示範 · 得分固定為 300

猴子接香蕉

  1. 移動滑鼠,控制猴子
  2. 接到 +100 分,漏接 -50 分
  3. 遊戲時間 10 秒

角色隱藏中 · 計時器等待開始

綠旗只做準備:顯示介紹與按鈕,角色隱藏,不會倒數。

✓
從介紹頁玩到結束,再重來一次

我的起始頁完成了嗎?

遇到問題,再展開除錯提示
  • 介紹頁就倒數或掉落:檢查是否還有舊綠旗程式在執行,搬家後不要留一份重複的啟動程式。
  • 角色隱藏卻仍計分:隱藏不等於停止;掉落迴圈必須改由開始訊息啟動。
  • 按鈕沒消失:確認用一般廣播,並在下面接「隱藏」。
  • 按綠旗後找不到按鈕:按鈕角色要有「當綠旗被點擊 → 顯示」。
  • 背景沒換:確認舞台接收「開始遊戲」,並選對你實際的背景名稱。
  • 時間到了沒停止:開始與結束是兩個不同訊息,檢查三處結束名稱是否一致。
用自己的話回答: 為什麼綠旗下的隱藏、廣播後的顯示,以及倒數程式的搬家,缺一不可?