📚 第一章:準備工作
🎯 本週目標
這週我們要在上週的基礎上,加入更多進階功能:
- 完整的遊戲流程(開始、進行、成功、失敗)
- 物理反彈角度計算(入射角 = 反射角)
- 角色的顯示與隱藏控制
- 音效與背景切換
步驟 2:打開上週的檔案
- 找到上週完成的打磚塊遊戲專案
- 檔名應該是:
你的學號-5
- 點擊「查看內部」開啟專案
- 確認上週的功能都正常運作:
- ✓ 磚塊已經可以生成 4×4 排列
- ✓ 分身碰撞偵測正常
- ✓ 分數可以正確累加
⚠️ 給上週沒來的同學
如果你上週沒來,請先完成上週的進度:
- 請教旁邊的同學,了解上週做了什麼
- 參考 C05 打磚塊遊戲(基礎版) 講義
- 至少要完成以下功能才能繼續本週課程:
- 建立分數變數
- 磚塊分身生成(4×4 排列)
- 磚塊碰撞偵測與刪除
- ☐ 已登入 Scratch 帳號
- ☐ 已打開上週的專案
- ☐ 確認上週功能正常
- ☐ 準備好開始本週的課程
🛠️ 第二章:開始製作
本章節我們將一步步完成遊戲的各項功能,請按照順序操作。
1️⃣ 背景切換
準備背景
我們需要準備 4 個不同的背景:
- 背景 1:遊戲說明文字(包含班級、座號、姓名)
- 背景 2:遊戲畫面(實際進行遊戲的背景)
- 背景 3:闖關失敗(球掉落時顯示)
- 背景 4:闖關成功(打破所有磚塊時顯示)
- 可以使用 Scratch 內建背景,再加上文字
- 或是用繪圖工具自己設計
- 確保文字清晰可讀
- 顏色要有足夠對比度
舞台程式:按綠旗顯示說明
說明:遊戲一開始先顯示遊戲說明背景。
舞台程式:按空白鍵開始遊戲
說明:按下空白鍵後,切換到遊戲畫面,並開始遊戲(磚塊會自動生成)。
2️⃣ 球拍控制
球拍程式:隨滑鼠左右移動
說明:按下空白鍵後,球拍開始跟隨滑鼠的 X 座標左右移動。
- 球拍的 Y 座標應該已經在上週設定好了(通常在 -150 左右)
- 如果球拍會上下移動,確認只設定 X 座標,不要改變 Y 座標
- 確保球拍的中心點設定在正中央
3️⃣ 球的運動
球程式:完整運動邏輯
📝 程式碼解析
- 定位到 (0, 0):球的初始位置在舞台中央
- 面向隨機 110-170 度:讓球以隨機角度往下掉(增加遊戲變化)
- 等待 1 秒:給玩家準備時間
- 移動 20 點:球的速度(數字越大越快)
- 碰到邊緣就反彈:球碰到舞台邊緣會反彈
- 碰到紅色:停止線,遊戲失敗
- 碰到球拍或磚塊:使用物理反彈公式
⚠️ 重要:停止線設置
在背景 2(遊戲畫面)的底部畫一條紅色的線:
- 點選背景 2
- 使用繪圖工具
- 選擇紅色(使用滴管確保是純紅色)
- 在舞台底部畫一條橫線
- 位置大約在 Y = -170 左右
4️⃣ 入射角與反射角介紹
🎯 物理反彈原理
在物理學中,當球碰到平面時,入射角 = 反射角
球打到球拍
反彈角度 = 180° - θ
例如:如果球以 45° 撞擊球拍
反彈角度 = 180° - 45° = 135°
球打到磚塊
反彈角度 = 180° - θ
例如:如果球以 60° 撞擊磚塊
反彈角度 = 180° - 60° = 120°

球打到球拍的反射角示意圖

球打到磚塊的反射角示意圖
🧮 Scratch 角度系統說明
Scratch 的角度是以「方向」來表示的:
- 0°:向上 ↑
- 90°:向右 →
- 180°:向下 ↓
- -90° 或 270°:向左 ←
在 Scratch 中,「方向」積木會回傳角色目前面對的角度。
所以「180 - 方向」就是物理反彈的計算公式!
程式碼:反彈效果
說明:球碰到球拍或磚塊時,計算反彈角度並播放音效。
5️⃣ 得分過關以及停止程式
球程式:過關判定
說明:當分數達到 16 分(所有磚塊都被打破),切換到成功背景並停止遊戲。
- 這個程式要獨立寫在「球」角色中
- 會一直偵測分數是否達到 16
- 可以在背景 4 加入慶祝動畫或文字
6️⃣ 角色隱藏與顯示
🎭 為什麼需要控制顯示?
在遊戲說明畫面(背景 1)時,我們不希望看到球拍、球和磚塊,所以需要控制角色的顯示與隱藏。
所有角色都要加入的程式
在球拍、球、磚塊這三個角色中,都要加入以下程式:
說明:
- 按綠旗時,所有遊戲角色隱藏(只顯示背景 1)
- 按空白鍵時,所有遊戲角色顯示(開始遊戲)
⚠️ 注意:磚塊的特殊處理
磚塊角色比較特別,因為它使用分身系統:
- 磚塊本尊要加上「按綠旗隱藏」和「按空白鍵隱藏」
- 因為我們要看到的是分身,不是本尊
- 分身的顯示已經在「當分身產生」程式中處理了
✅ 完成檢查
確認以下項目都已完成:
- ☐ 準備好 4 個背景(說明、遊戲、失敗、成功)
- ☐ 按綠旗顯示遊戲說明背景
- ☐ 按空白鍵切換到遊戲背景並生成磚塊
- ☐ 球拍可以隨滑鼠左右移動
- ☐ 球會以隨機角度往下掉
- ☐ 球碰到紅線會切換到失敗背景並停止
- ☐ 球碰到球拍或磚塊會以正確角度反彈
- ☐ 分數達到 16 會切換到成功背景
- ☐ 所有角色在說明畫面時隱藏,遊戲開始時顯示
⭐ 加分題挑戰
🏆 進階挑戰
完成基本功能後,可以挑戰以下加分項目來提升遊戲難度和豐富度!
加分題 1:磚塊增加為 8×4(32 個)⭐⭐
修改磚塊生成程式
將原本的 4×4 磚塊陣列改為 8×4,讓遊戲更有挑戰性。
⚠️ 注意事項
- 內層迴圈改為「重複 8 次」(原本是 4 次)
- 磚塊的 X 座標間距可能需要調整(例如改為 60 點)
- 過關分數要改為 32 分(原本是 16 分)
- 可能需要調整磚塊的大小以適應舞台
- 如果磚塊太擠,可以將間距從 100 改為 60-70
- 起始 X 座標可能需要調整(例如從 -210 開始)
- 磚塊角色可以縮小到 80% 左右
加分題 2:速度變數與動態難度 ⭐⭐⭐⭐
步驟 1:建立速度變數
在球角色中建立一個區域變數「速度」
步驟 2:設定初始速度
在遊戲開始時,將速度設為初始值
步驟 3:使用速度變數控制球的移動
將原本固定的移動點數改為使用速度變數
步驟 4:每少 8 塊磚塊就加速
偵測分數變化,當打破一定數量的磚塊後增加速度
說明:當分數達到 8、16、24 時,速度各增加 3 點,讓遊戲越來越難。
🎮 速度變化效果
- 0-7 分:速度 = 10(基礎速度)
- 8-15 分:速度 = 13(稍微加快)
- 16-23 分:速度 = 16(更快了)
- 24-32 分:速度 = 19(挑戰難度!)
⚠️ 進階技巧(選用)
也可以使用數學運算來自動計算速度變化:
這樣就不用寫很多個 if 判斷了!
✨ 加分題完成效果
- ✓ 遊戲變得更長,更有挑戰性(32 個磚塊)
- ✓ 難度漸進式提升,越後面越難
- ✓ 玩家需要更快的反應速度
- ✓ 增加遊戲的刺激感和重玩性
🎓 總結與測試
遊戲流程測試
- 按下綠旗:
- 應該只看到背景 1(遊戲說明)
- 看不到球拍、球、磚塊
- 按下空白鍵:
- 切換到背景 2(遊戲畫面)
- 磚塊生成 4×4 排列
- 球拍、球都顯示出來
- 球等待 1 秒後開始移動
- 遊戲進行中:
- 球拍跟隨滑鼠移動
- 球會反彈(碰到邊緣、球拍、磚塊)
- 打到磚塊會加分並消失
- 有反彈音效
- 遊戲結束:
- 球掉落碰到紅線 → 背景 3(失敗)
- 或分數達到 16 → 背景 4(成功)
- 遊戲停止
🎯 本週學習重點
- 物理反彈:理解並應用 180° - θ 的反彈公式
- 遊戲流程:完整的開始、進行、成功、失敗流程
- 角色控制:使用隱藏/顯示控制遊戲畫面
- 條件判斷:偵測不同情況並做出對應反應
- 音效運用:增加遊戲的趣味性
💡 進階挑戰(選做)
- 調整球的速度,讓遊戲更有挑戰性
- 加入生命值系統(3 次機會)
- 製作多個關卡(不同的磚塊排列)
- 加入特殊磚塊(需要打兩次才會消失)
- 記錄最高分數
- 加入背景音樂
⚠️ 常見問題解決
- 球穿過球拍:球的速度太快,減少移動的點數(改為 10-15)
- 球不會反彈:檢查「180 - 方向」的積木是否正確放置
- 磚塊沒有顯示:確認分身產生時有加「顯示」指令
- 過關判定沒反應:檢查分數變數是否正確累加
- 紅線沒反應:使用滴管工具確保顏色一致
✨ 完成作品
恭喜你完成了完整的打磚塊遊戲!這個專案涵蓋了:
- ✓ 變數與分身系統
- ✓ 碰撞偵測與物理運算
- ✓ 遊戲流程控制
- ✓ 音效與視覺效果
記得將作品命名為:你的學號-5b
,並繳交至 Classroom!
🎓 課程結束
你已經掌握了 Scratch 遊戲開發的核心技能!
© 2024 銘傳資科 - Scratch 程式設計課程