經典的打磚塊:用滑鼠控制下面的球拍把球彈上去,打掉上面兩排共 12 塊磚。全部打掉就過關;球掉到底下會少一條命,3 條命用完遊戲結束。這堂要學三件新本事:反彈角度(球打在球拍哪裡,就往哪邊飛)、生命值,還有用廣播管整個遊戲的狀態:開始畫面 → 開始 → 過關/遊戲結束。
今天要做出來的作品

老師上課會先打開
08_打磚塊.sb3按一次綠旗,大家一起看成品長什麼樣子。 📥 下載本堂講義 PDF
學習目標
- 反彈角度:碰到球拍時「面朝(球的 x − 球拍的 x)× 1.2 度」;碰到磚塊時「面朝 180 − 方向」
- 生命值:用變數「生命」記還剩幾次機會,用「重複直到〈生命 = 0〉」一顆一顆重新發球
- 遊戲狀態:用四則廣播「開始畫面、開始、過關、遊戲結束」決定現在該做什麼
- 複習:分身(排磚塊)、滑鼠(球拍跟著鼠標的 x)
遊戲規則
- 按綠旗:分數 0、生命 3,出現「打磚塊 按空白鍵開始」的開始畫面。
- 按空白鍵:開始畫面消失,上面排出兩排共 12 塊磚,球從球拍上方發出去。
- 球碰到上、左、右的邊會反彈;碰到球拍會彈回去,打在球拍左邊往左飛、打在右邊往右飛、打在正中間直直往上。
- 球碰到磚塊:磚塊消失、分數加 1,球反彈回來。
- 球掉到底下的紅線:生命少 1,1 秒後重新發球。
- 過關:12 塊都打掉 → 「過關!」。遊戲結束:生命變 0 → 「遊戲結束」。
| 廣播 | 誰喊 | 誰收到、做什麼 |
|---|---|---|
| 開始畫面 | 舞台(綠旗) | 字卡顯示標題,等空白鍵 |
| 開始 | 字卡(按下空白鍵) | 磚塊排出分身、球開始發球、舞台開始等 12 分 |
| 打到磚塊 | 磚塊分身 | 球反彈回來 |
| 過關 | 舞台(分數 = 12) | 字卡顯示「過關!」、球藏起來停下 |
| 遊戲結束 | 球(生命 = 0) | 字卡顯示「遊戲結束」 |
步驟 1:畫角色和背景

- 開新專案,刪掉小貓。舞台畫一張深色背景(名字「夜空」),最下面畫一條紅線,提醒玩家「掉到這裡就少一條命」。
- 用「繪畫」畫四個角色:
– 球拍:一條長方形(寬約 100、高約 15)。 – 球:一個小圓(約 20)。 – 磚塊:一塊長方形(寬約 60、高約 20)。 – 字卡:三個造型,分別打上「打磚塊/按空白鍵開始」「過關!」「遊戲結束」,造型名字取「標題」「過關」「遊戲結束」。
- 變數類建兩個變數:分數、生命。
💡 為什麼這些都自己畫?打磚塊的東西都是簡單的長方形和圓,自己畫最快,而且大小剛好。角色庫的圖形狀不規則,碰撞會很奇怪(看起來沒碰到卻算碰到)。
💡 為什麼磚塊只畫一塊?等一下用分身排出 12 塊。只畫一塊,改顏色、改大小都只要改一次。
步驟 2:舞台和字卡——用廣播管遊戲狀態

先點舞台:

- 當綠旗被點擊 → 背景換成 夜空 → 分數設為 0 → 生命設為 3 → 廣播「開始畫面」。
- 當收到訊息「開始」→ 等待直到〈分數 = 12〉→ 廣播「過關」。
再點字卡:

- 當收到訊息「開始畫面」→ 造型換成 標題 → 圖層移到 最上 層 → 顯示 → 等待直到〈空白 鍵被按下?〉→ 隱藏 → 廣播「開始」。
- 當收到訊息「過關」→ 造型換成 過關 → 圖層移到 最上 層 → 顯示;「遊戲結束」也一樣做一段。
💡 為什麼不要一按綠旗就開打,要先有開始畫面?玩家按了綠旗,可能手還沒放到滑鼠上球就掉了。開始畫面等玩家準備好按空白鍵才喊「開始」,而且每一局都從同一個狀態出發。
💡 為什麼磚塊、球都聽「開始」,不聽綠旗?遊戲有好幾個階段,每個角色只要聽「現在是哪個階段」就知道該做什麼。以後想加「第二關」,只要再喊一次「開始」,不必按綠旗重來。
💡 為什麼「過關」由舞台判斷,不讓最後一塊磚喊?分數是大家共用的,舞台一個人看分數最清楚。讓磚塊判斷的話,每一塊都要多寫「如果分數=12」,改關卡時要改 12 個地方。
💡 為什麼字卡用「等待直到〈空白鍵被按下?〉」,不用「當空白鍵被按下」?「當空白鍵被按下」任何時候都會觸發,玩到一半按空白鍵就會重新喊「開始」、多排出 12 塊磚。「等待直到」只在開始畫面那一刻等,其他時間按空白鍵不會怎樣。
步驟 3:球拍跟著滑鼠

當綠旗被點擊 → 定位到 x:0、y:-140 → 重複無限次〔x 設為 鼠標的 x〕。
💡 為什麼只設 x,不用「定位到 鼠標」?球拍只能左右移動。用「定位到 鼠標」的話,球拍會跟著滑鼠跑到舞台中間,玩家可以直接拿球拍去撞磚塊。
步驟 4:磚塊用分身排成兩排

- 當綠旗被點擊 → 隱藏。
- 當收到訊息「開始」→ 定位到 x:-175、y:100 → 圖像效果清除 → 重複 2 次〔重複 6 次〔建立 自己 的分身 → x 改變 70〕→ x 設為 -175 → y 改變 -30 → 圖像效果 顏色 改變 40〕。
- 當分身產生 → 顯示 → 等待直到〈碰到 球?〉→ 廣播「打到磚塊」 → 分數改變 1 → 分身刪除。
💡 為什麼是「重複裡面再放一個重複」?裡面那層「重複 6 次」負責排一整排:放一塊、往右移 70,放下一塊。外面那層「重複 2 次」負責換排:排完一排回到最左邊(x 設為 -175)、往下一格(y 改變 -30)再排一排。
💡 為什麼每塊往右移 70,磚塊只有 60 寬?多出來的 10 是縫。沒有縫的話,磚塊黏成一整條,看不出是一塊一塊的。
💡 為什麼每排要「顏色 改變 40」?分身出生時會照抄本尊當下的樣子。本尊換了顏色才生下一排,下一排就是新顏色,一塊磚塊造型就能變出兩種顏色。
💡 為什麼打到磚塊要「廣播」給球?磚塊知道自己被打到,但要轉方向的是球。磚塊喊一聲「打到磚塊」,球聽到就自己反彈。
✅ 檢查點:按綠旗出現開始畫面;按空白鍵,開始畫面消失、上面排出兩排共 12 塊不同顏色的磚;球拍跟著滑鼠左右走。
步驟 5:球——發球、反彈角度、生命值


點「球」,拼出這幾段:

- 當綠旗被點擊 → 隱藏。
- 當收到訊息「開始」→ 重複直到〈生命 = 0〉〔
定位到 x:0、y:-100 → 面朝(隨機取數 -40 到 40)度 → 顯示 → 等待 1 秒 → 重複直到〈y 座標 < -165〉〔移動 8 點 → 碰到邊緣就反彈 → 如果〈碰到 球拍?〉那麼 面朝((x 座標 −(球拍 的 x 座標))× 1.2)度 → 播放音效 Boing〕→ 隱藏 → 生命 改變 -1〕→ 廣播「遊戲結束」。
- 當收到訊息「打到磚塊」→ 面朝(180 − 方向)度。
- 當收到訊息「過關」→ 隱藏 → 停止 這個物件的其它程式。
「球拍 的 x 座標」在偵測類:拖出「舞台 的 背景編號」,左邊選「球拍」,右邊選「x 座標」。
💡 為什麼碰到球拍用「(球的 x − 球拍的 x)× 1.2」?這個數字就是「球打在球拍中心的哪一邊、偏多遠」。打在正中間是 0,面朝 0 度就是直直往上;打在右邊是正的,往右上飛;打在左邊是負的,往左上飛。玩家就能靠移動球拍控制球的方向,這就是打磚塊好玩的地方。
💡 為什麼要乘 1.2?球拍一半寬大約 50,加上球的半徑差不多是 60。乘 1.2,打在最邊邊時大約 72 度,球斜斜飛出去但還是往上。乘太大(例如 3)會超過 90 度,球直接往下掉,看起來像穿過球拍。
💡 為什麼碰到磚塊是「面朝 180 − 方向」?在 Scratch 裡 0 度朝上、180 度朝下。往右上 30 度飛的球,180 − 30 = 150,變成往右下 150 度:左右不變、上下顛倒,就像撞到天花板彈下來。
💡 為什麼碰到球拍不也用「180 − 方向」?那樣每次反彈角度都一樣,玩家怎麼接都沒差,球會一直在同幾條路線來回,永遠打不到角落的磚塊。
💡 為什麼生命用「重複直到〈生命 = 0〉」包住整個發球?每漏接一次,生命減 1,然後迴圈回到最上面重新發球。生命還沒到 0 就一直發,到 0 迴圈才結束、往下喊「遊戲結束」。不必寫三次發球的程式。
💡 為什麼發球前要「等待 1 秒」?漏接後馬上發球,玩家來不及把球拍移回中間。停 1 秒讓玩家看清楚「我漏了一顆」,再準備接下一顆。
✅ 檢查點:按空白鍵後球會發出去;接球時打在球拍左邊球往左飛、右邊往右飛;打到磚塊磚塊消失、分數加 1;故意漏接,生命會 3 → 2 → 1 → 0 然後出現「遊戲結束」;打掉 12 塊出現「過關!」,球停下來。
步驟 6:存檔繳交

檔案 → 下載到你的電腦,再上傳到 Google Classroom。
💡 為什麼一定要下載?線上版 Scratch 沒登入不會幫你存,關掉分頁就沒了。
收不到、不會動?先查這幾件事
| 狀況 | 多半是 |
|---|---|
| 按綠旗後沒有開始畫面 | 舞台最後沒廣播「開始畫面」,或字卡收的訊息選錯 |
| 按空白鍵沒反應 | 字卡的「等待直到」裡要放偵測類的〈空白 鍵被按下?〉,不是事件類的帽子 |
| 玩到一半按空白鍵多出一堆磚塊 | 用了「當空白鍵被按下 → 廣播開始」,改用字卡的「等待直到」 |
| 左上角有一塊磚打不掉 | 磚塊本尊沒有在綠旗時隱藏 |
| 磚塊全部疊在同一個位置 | 裡面那層重複少了「x 改變 70」 |
| 球黏在球拍上一直抖 | 反彈角度的乘數太大,或寫成「右轉 180 度」 |
| 球打到磚塊直接穿過去 | 磚塊分身沒有「廣播 打到磚塊」,或球沒有「當收到訊息 打到磚塊」 |
| 生命變成負的 | 迴圈條件寫成「生命 < 0」,要寫「生命 = 0」 |
| 過關了球還在跑 | 球收到「過關」少了「停止 這個物件的其它程式」 |
換成你自己的(必做)
- ☐ 換外觀:球、球拍、磚塊、背景換成你自己的主題(太空、海底、糖果…)
- ☐ 至少改一條規則:磚塊的排數或每排塊數(過關分數要跟著改)、生命數、球的速度選一個改
- ☐ 開始畫面換成你自己的遊戲名字
- ☐ 過關和遊戲結束兩種結局都玩得到
挑戰(做完的人選一題)
- ★ 幫遊戲配背景音樂:收到「開始」時開始播放,收到「過關」或「遊戲結束」時停止。
- ★ 打到磚塊時播放音效,漏接時球拍說「哎呀!」。
- ★★ 越打越快:分數每多 3 分,球的移動步數多 1(提示:「移動 8 點」改成「移動(8 + 分數 ÷ 3)點」)。
- ★★ 過關後出現「第二關」:字卡顯示 2 秒後再喊一次「開始」,排出新的磚塊(過關分數要改成 24)。
- ★★★ 做一種「硬磚」:要打兩次才會消失(提示:分身用一個造型代表完整、打一次換成裂開的造型,第二次才刪除)。
互看檢查表(兩人互相打勾)
- ☐ 按綠旗會先出現開始畫面,按空白鍵才開始嗎?
- ☐ 打在球拍左邊、右邊,球飛的方向不一樣嗎?
- ☐ 打到磚塊,磚塊會消失、分數加 1 嗎?
- ☐ 漏接會少一條命、重新發球;命用完會出現「遊戲結束」嗎?
- ☐ 打掉全部磚塊會出現「過關!」,球會停下來嗎?
- ☐ 說得出:「開始」是誰喊的?誰收到了?為什麼磚塊打到了要用廣播告訴球?
