外星人從太空慢慢降落,開著火箭左右移動、按空白鍵發射子彈,打下 10 隻就過關;只要有一隻降落到底下,遊戲就結束。這是期末專題的參考範例:子彈和外星人都是分身,過關和結束都用廣播通知大家。
今天要做出來的作品

按下綠旗後:
- 外星人一隻一隻從上面隨機的位置慢慢降下來。
- ← → 移動火箭,空白鍵發射子彈,子彈往上飛。
- 子彈打到外星人,外星人消失、分數加 1。
- 打到 10 分,火箭說「過關!」,外星人全部消失;有外星人降落到底,火箭說「遊戲結束」,畫面停住。
老師上課會先打開
12_太空射擊.sb3按一次綠旗,大家一起看成品長什麼樣子。 📥 下載本堂講義 PDF
學習目標
- 會用分身做子彈:按一次空白鍵,生一顆會自己飛的子彈
- 會用「建立(別的角色)的分身」:火箭負責按鍵,子彈負責飛
- 會用「等待直到」:分數到了就廣播「過關」
- 會設計兩種結局:過關、遊戲結束
遊戲規則
| 項目 | 規則 |
|---|---|
| 操作 | ← →:移動;空白鍵:發射 |
| 得分 | 子彈打到外星人 +1 |
| 過關 | 分數 > 9(打到 10 隻) |
| 結束 | 有外星人降到 y < -100 |
| 廣播 | 開始(火箭)、過關(火箭)、遊戲結束(外星人) |
步驟 1:準備角色

- 開新專案,刪掉小貓。「選個角色」挑 Rocketship 改名「火箭」(尺寸 35)、Gobo 改名「外星人」(尺寸 50)。
- 用畫筆畫一個小小的黃色長條,改名「子彈」。
- 背景選 Space,建一個變數「分數」。
💡 為什麼子彈要自己一個角色?子彈要做的事(往上飛、飛出去就消失)跟火箭完全不一樣。分開成兩個角色,火箭的程式只管移動和發射,子彈的程式只管飛,壞了也比較好找。
步驟 2:火箭的程式

- 綠旗:定位到 (0, -140) → 分數設為 0 → 廣播「開始」→ 等待直到 分數 > 9 → 廣播「過關」。
- 當「向左」鍵被按下:x 改變 -20;當「向右」鍵被按下:x 改變 20。
- 空白鍵:建立「子彈」的分身。
- 當收到「過關」:說出「過關!打下 10 隻外星人!」。
- 當收到「遊戲結束」:說出「外星人降落了……遊戲結束」。
💡 為什麼「建立分身」寫在火箭,而且選的是「子彈」?按空白鍵是火箭這邊的事,所以寫在火箭;但生出來的要是子彈,所以下拉選單要選「子彈」,不是「自己」。選成「自己」,會變出一堆火箭。
💡 為什麼用「等待直到 分數 > 9」而不是「分數 = 10」?子彈可以一次穿過兩隻外星人,分數可能從 9 直接跳到 11,「等於 10」那一刻根本沒發生,就永遠不會過關。用「大於 9」,跳過 10 也抓得到。
💡 為什麼等待直到要接在「廣播開始」後面?綠旗那段做完設定後就停在這裡等,一直盯著分數。分數一到,就換它廣播「過關」。這樣「誰負責判斷過關」只有一個地方,很清楚。
步驟 3:子彈的程式


- 綠旗:隱藏。
- 當分身產生:定位到「火箭」→ 顯示 → 重複直到 y > 170 { y 改變 12 } → 分身刪除。
💡 為什麼子彈分身一出生要「定位到火箭」?分身出生在本尊的位置,本尊子彈一直躲在原地,不會跟著火箭走。先定位到火箭,子彈才會從火箭的頭上射出去。
💡 為什麼 y > 170 就刪除?舞台最上面是 180,超過就看不到了。看不到的分身不刪,每按一次空白鍵就多一個,打一局會累積幾百個,電腦越來越卡。
步驟 4:外星人的程式

- 綠旗:隱藏。
- 當收到「開始」:重複無限次 { 建立自己的分身、等待 1.2 秒 }。
- 當分身產生:定位到 x: 隨機 -200 到 200、y: 160 → 顯示 → 重複直到「碰到子彈 或 y < -100」{ y 改變 -1 } → 如果 碰到子彈 { 分數改變 1、播放音效 } 否則 { 廣播「遊戲結束」} → 分身刪除。
- 當收到「過關」:停止這個物件的其它程式 → 分身刪除。
- 當收到「遊戲結束」:停止這個物件的其它程式。
💡 為什麼「打到了沒」由外星人判斷,不由子彈判斷?子彈和外星人的程式是輪流跑的。如果子彈一碰到就先把自己刪掉,輪到外星人檢查時子彈已經不見了,外星人就不知道自己被打到。讓外星人自己檢查「碰到子彈?」,一定抓得到。
💡 為什麼迴圈出來還要再問一次「如果碰到子彈」?重複直到有兩個出口:被打到、或降落到底。出口不一樣,後面要做的事也不一樣,所以出來後要再分辨是哪一個。
💡 為什麼過關要刪分身,遊戲結束只停住?過關是好消息,畫面清乾淨讓火箭的「過關!」最顯眼;遊戲結束讓外星人停在原地,玩家看得到是哪一隻漏掉了。同一個「停止其它程式」,後面接不接「分身刪除」,就是兩種不同的結局。
✅ 檢查點:按綠旗,按空白鍵有子彈往上飛;打到外星人分數 +1;打到 10 分說「過關!」、外星人全部消失。重玩一次都不打,外星人降到底要說「遊戲結束」、全部停住。
步驟 5:舞台和存檔

舞台:當綠旗被點擊 → 背景換成 Space。
存檔:檔案 → 下載到你的電腦,再上傳到 Google Classroom。
💡 為什麼一定要下載?線上版 Scratch 不會自動存到你的電腦。
收不到、不會動?先查這幾件事
| 狀況 | 多半是 |
|---|---|
| 按空白鍵變出一堆火箭 | 「建立分身」選成了「自己」,要選「子彈」 |
| 子彈一直從同一個地方射出 | 子彈分身少了「定位到火箭」 |
| 子彈打到外星人不加分 | 判斷寫在子彈;或外星人的「碰到」選錯角色 |
| 打到 10 分不過關 | 寫成「分數 = 10」,分數跳過了 10 |
| 過關後外星人還一直出來 | 外星人少了「收到過關 → 停止這個物件的其它程式」 |
| 越玩越卡 | 子彈或外星人分身沒有刪除 |
換成你自己的(必做)
- ☐ 換掉火箭、外星人、子彈和背景(例如:廚師丟飯糰餵怪獸、澆花器噴水救花)
- ☐ 改一條規則:過關分數、外星人降落速度、生出來的間隔,選一個改
- ☐ 過關和遊戲結束的台詞換成你自己的
- ☐ 期末要做小遊戲的人:把這款的廣播(開始、過關、遊戲結束)填進企劃單的廣播清單當範例
挑戰(做完的人選一題)
- ★ 外星人被打到時換成爆炸造型、等 0.2 秒再刪除(提示:要先把它改成不會再被打到)。
- ★★ 外星人一邊往下一邊左右晃(提示:分身裡加「面朝 90 度」,迴圈裡「移動 2 點」「碰到邊緣就反彈」)。
- ★★ 限制子彈數:新增變數「子彈數」,發射一次減 1,是 0 就不能射,打到外星人補 1 顆。
- ★★★ 加第二關:過關後換背景、外星人變快,打到 20 分才真正過關。
互看檢查表(兩人互相打勾)
- ☐ 每按一次空白鍵,只射出一顆子彈,從火箭頭上射出
- ☐ 打到外星人一定加分,外星人會消失
- ☐ 過關、遊戲結束兩種結局都看得到
- ☐ 玩一整局不會越來越卡
- ☐ 說得出:為什麼「打到了沒」要讓外星人判斷?
- ☐ 說得出:「過關」是誰廣播、誰收到、收到後做什麼
