🎮 C10 擊落敵機遊戲設計

迴圈型結構 (Loop Structures)

透過 Scratch 建立射擊敵機遊戲,學習迴圈結構的應用

📥 下載連結(保持原檔名不改)

基本程式檔:

8xxxx-10.sb3(Google Drive)

原檔說明:用滑鼠左鍵點選下載,檔名不要修改

一、教學主題

主題名稱:迴圈型結構 — 擊落敵機遊戲設計

課程核心:透過 Scratch 建立一個「射擊敵機」的遊戲,讓學生理解並應用迴圈結構 (Loop Structures)。

二、程式概念講解

1. 課程焦點:迴圈型結構

定義

依據條件是否成立,決定是否重複執行一段程式。

2. 迴圈型結構的種類

A類型 A:條件成立才迴圈(類似 while(條件){...})

語法範例: while (條件) { // 執行的程式碼 }
Scratch 中對應方式:使用「重複執行」+「等待直到」
重要:Scratch 沒有等價積木,以「重複執行」+「等待直到」替代。
重點:當條件成立,才持續做圈內動作。

B類型 B:先做,直到條件成立才離開(重複直到…)

語法範例: repeat until (條件) { // 執行的程式碼 }
Scratch 中對應積木:重複直到…
重點:在條件成立前,一直重複圈內動作。

3. 迴圈結構的應用場景

  • 遊戲循環:持續檢查遊戲狀態、更新畫面
  • 動畫效果:重複執行移動、旋轉等動作
  • 條件等待:等待特定事件發生
  • 計數器:重複執行固定次數的動作

三、素材與變數(補充)

1. 角色建議

角色類型 建議內容 說明
舞台 多張關卡背景 「時間到」「恭喜過關」背景
開始按鈕 點擊啟動遊戲 廣播 go 訊號
發射台 滑鼠跟隨 砲彈發射位置
砲彈 空白鍵發射 擊中敵機/客機
敵機 移動攻擊目標 擊中得分 +1
客機 誤擊扣分目標 擊中扣分 -4
爆炸特效 選擇性 增加視覺效果

2. 廣播訊號

廣播訊號: • go(開始遊戲) • gameover(時間到/結束) • restart(重玩)

3. 變數設定

變數列表: • 分數(計分用) • 秒數(計時用) • isOdd(單/雙號判斷) • gameOn(遊戲狀態) • bulletReady(子彈冷卻)

四、步驟化實作

A開始畫面與座號姓名

🎭 舞台背景設定
在開場背景上置入「班級座號姓名」
舞台 → 背景 → 在開場背景上置入文字 範例:81760林小明
▶️ 開始按鈕(補充)
點擊時廣播(go)並隱藏自己
當這個角色被點擊 ├── 廣播 go └── 隱藏

B發射台(滑鼠跟隨)

🚀 發射台程式
按綠旗 → 無限重複 → 定位到 (x: 滑鼠座標, y: -130)
綠旗 被點擊
重複無限次
定位到 x: 滑鼠的x座標 y: -130
等待 0.1
小提醒:發射台太低會導致砲彈不發射(見 PDF 備註)

C砲彈(空白鍵發射)

💥 砲彈程式
按下空白鍵發射砲彈
綠旗 被點擊
隱藏
當接收到 go
重複無限次
等待直到 空白鍵被按下
定位到 x: 發射台的x座標 y: 發射台的y座標
顯示
重複直到 碰到邊緣
將y座標增加 50
等待 0.1
隱藏
補充建議:
  • 新增 bulletReady:避免連按造成多發判定
  • 碰到敵/客機後,短暫等待 0.05 秒再隱藏,避免一次擊中被判多次

D計時(單/雙號規則)

⏰ 計時系統
PDF 要求:單號正數30秒,雙號倒數30秒
當接收到 go
設定 秒數0
// 單號
設定 gameOntrue
重複直到 秒數 > 30
等待 1
秒數 改變 1
// 單號
廣播 gameover
切換背景到 時間到
停止 全部

E敵機(Clone 機制)

✈️ 敵機程式
按綠旗 → 分數歸零、隱藏
綠旗 被點擊
設定 分數0
隱藏
當接收到 go
重複無限次
等待 0.3
// 單號
建立分身
當分身被建立
顯示
定位到 x: -200200 之間取隨機數 y: 130
面向 90
// 右
重複無限次
移動 10
如果 碰到邊緣
反彈
如果 碰到 砲彈
分數 改變 1
刪除分身
補充:可加入「著火下墜」特效(換造型→多次 y -10 → 刪分身),呼應 PDF 的「避免太高不會掉下來」提醒

F客機(誤擊扣分)

🛩️ 客機程式
接收到 go:立即產生第一個分身,之後每隔 3~4 秒再生
當接收到 go
建立分身
// 立即產生第一個
重複無限次
等待 3
// 單號
建立分身
當分身被建立
定位到 x: -200200 之間取隨機數 y: 110
重複無限次
移動 5
如果 碰到 砲彈
分數 改變 -4
刪除分身

G計分與時間顯示(UI)

📊 顯示系統
按綠旗隱藏,接收go後顯示
綠旗 被點擊
隱藏分數與秒數監視器
當接收到 go
顯示分數與秒數
重複無限次
說出 "得分: " + 分數
說出 "時間: " + 秒數
重玩:確認有重新計分、計時

H關卡背景切換(多重判斷)

🎨 背景切換系統
邏輯寫在舞台,分數下降時可回到前一關
當接收到 go
重複無限次
如果 分數10
切換背景到 第1關
否則如果 分數20
切換背景到 第2關
否則如果 分數30
切換背景到 第3關
否則
切換背景到 過關
說出 "恭喜過關!"
停止 全部
關卡 分數條件 背景效果
第 1 關 ≤ 10 基礎背景
第 2 關 11 – 20 中等難度背景
第 3 關 21 – 30 困難背景
過關 ≥ 31 顯示「恭喜過關」+ 停止全部

五、常見問題排除

⚠️ 重要提醒

  • 發射台位置:不要太低,否則砲彈無法發射
  • 飛機高度:不要太高,否則被擊中後不會掉下來
  • 碰撞檢測:確保砲彈與飛機的碰撞範圍設定正確
  • 移動速度:飛機移動速度要適中,不要太快或太慢

🔧 常見問題解決

問題 可能原因 解決方法
砲彈不發射 發射台太低 調高 y 值(建議 -120 ~ -130)
飛機被擊中卻不掉落 飛機太高 生成 y 值調低,或加入「著火下墜」特效
碰撞檢測失效 角色造型碰撞範圍設定 確認角色造型的碰撞範圍設定
分數計算錯誤 敵機和客機的碰撞條件 檢查敵機和客機的碰撞條件
計時器異常 計時器重設和增加邏輯 確認計時器重設和增加邏輯
背景切換問題 分數條件判斷的邏輯 檢查分數條件判斷的邏輯

六、延伸挑戰(補充)

🚀 進階功能挑戰

  • 爆炸音效與粒子特效:造型+音效庫
  • 子彈冷卻/連發限制:bulletReady 變數控制
  • 客機誤擊連續扣分的防抖:碰到後先讓砲彈短暫隱藏
  • 三條命或護盾道具:變數 life、shield
  • 結束畫面提供「重玩」按鈕:廣播 restart
  • 添加音效和背景音樂
  • 設計更多種類的敵機
  • 增加道具系統(加分、加時間等)
  • 實作關卡選擇功能
  • 添加最高分記錄功能
  • 設計更複雜的敵機移動模式

七、完整遊戲流程

遊戲啟動順序

  1. 按綠旗啟動遊戲
  2. 顯示開始畫面(座號姓名)
  3. 點擊開始按鈕發送「go」訊號
  4. 所有角色接收 go 後進入遊戲
  5. 開始計時和得分系統
  6. 敵機和客機開始產生
  7. 玩家可以發射砲彈
  8. 根據分數切換關卡背景
  9. 時間到或達到過關分數時結束

八、作業繳交

📋 繳交步驟

  1. 完成所有程式功能
  2. 測試遊戲運行正常
  3. 儲存檔案(保持原檔名:C10.sb3)
  4. 下載作品檔案
  5. 上傳至 Classroom 作業 C10
  6. 完成繳交