圖看不清楚就點一下,用滾輪或下方拉桿放大,按住圖片可以移動,按 × 關閉。
📦 動手前先下載素材
這幾樣是自己畫的,Scratch 素材庫裡找不到,點按鈕下載:
放進專案:
- 🧩 角色:滑鼠移到角色區右下角的「選個角色」→ 點「上傳角色」
講義寫「畫」的地方,直接用這些檔案(想自己畫也可以)。上傳的只有造型,程式還是要照講義自己拼。
按空白鍵讓小鳥拍翅膀往上,不按就越掉越快。水管從右邊飛來,要鑽過中間的縫。今天用速度變數做出重力。
今天要做出來的作品

按下綠旗後:
- 小鳥從左邊開始往下掉,按空白鍵就往上飛一下。
- 水管從右邊飛過來,每根的縫高高低低都不一樣。
- 每鑽過一根水管,分數加 1。
- 撞到水管或掉到地上,小鳥說出「遊戲結束!分數:…」,水管全部停住。
老師上課會先打開
10_飛翔小鳥.sb3按一次綠旗,大家一起看成品長什麼樣子。 📥 下載本堂講義 PDF
今天做什麼
| 做什麼 | 做完會有什麼 |
|---|---|
| 步驟 1:準備角色和變數 | 小鳥、水管、分數、速度 |
| 步驟 2:寫小鳥程式 | 下落加速、拍翅膀 |
| 步驟 3:做水管分身 | 往左飛、經過加分 |
| 步驟 4:設定隨機高度 | 每根縫的高度不同 |
| 步驟 5:寫舞台和存檔 | Blue Sky、交作品 |
學習目標
- 會用變數做重力:速度每次減 1,位置每次加上速度
- 會用分身:一個水管角色,生出很多根水管
- 會用「隨機取數」讓每根水管的高度都不一樣
- 複習:廣播「開始」「遊戲結束」管遊戲狀態、重複直到、碰到
遊戲規則
| 項目 | 規則 |
|---|---|
| 操作 | 空白鍵:往上飛一下 |
| 得分 | 每鑽過一根水管 +1 |
| 結束 | 碰到水管,或掉到舞台最下面 |
| 誰喊開始 | 小鳥(綠旗後廣播「開始」) |
| 誰喊結束 | 小鳥(迴圈停下來就廣播「遊戲結束」) |
步驟 1:準備角色和兩個變數
- 開新專案,刪掉小貓。「選個角色」挑 Parrot,名字改成「小鳥」,尺寸改成 35。
- 「選個背景」挑 Blue Sky。
- 水管:用這頁最上面下載的「水管.sprite3」——滑鼠移到「選個角色」→「上傳角色」。角色名字是「水管」:上下兩根綠色長條,中間留一個縫。(程式步驟 3 才寫,但小鳥的程式要用到「碰到 水管」,所以先放進來。)
- 到橘色的變數類,按「建立一個變數」,建兩個:分數、速度(都選「適用於所有角色」)。

想自己畫水管:「選個角色」→「繪畫」,名字改成「水管」,用矩形畫上下兩根綠色長條,中間留縫(約 160 點高)。
⚠️ 注意:把兩根一起拖,讓縫的正中間對準畫布中間的十字(造型中心)。
💡 為什麼要多一個「速度」變數?「y 改變 -5」每次都掉一樣多,看起來像坐電梯,不像在掉。真的東西掉下來是越掉越快的;要讓每次掉的量不一樣,就得把「這次要掉多少」記在一個會變的地方——那就是變數。
💡 為什麼尺寸要改小?鳥太大,縫就要開很大才鑽得過,遊戲就沒挑戰了。角色大小會直接改變遊戲難度。
✅ 檢查點:角色區有小鳥和水管,水管上下兩根綠條中間有縫。
步驟 2:小鳥的重力和拍翅膀
點角色區的「小鳥」,拼出這三段:

- 綠旗:定位到 x:-120、y:0 → 分數、速度都設為 0 → 廣播「開始」 → 重複直到「碰到水管 或 y 座標 < -165」:速度改變 -1、y 改變(速度)→ 迴圈結束就廣播「遊戲結束」。
- 當空白鍵被按下:速度設為 8、造型換成下一個(拍翅膀)。
- 當收到「遊戲結束」:說出「遊戲結束!分數:」和分數字串組合在一起。
「開始」「遊戲結束」是新的訊息:點「廣播訊息」的下拉選單 →「新的訊息」建立。
💡 為什麼「速度改變 -1」會變成重力?迴圈每跑一圈,速度就少 1:0、-1、-2、-3……而 y 每圈加上速度,所以一開始只掉 1 點,接著 2 點、3 點,越掉越快。速度管「這一圈移動多少」,y 管「現在在哪裡」,兩個分開記,才做得出加速。
💡 為什麼拍翅膀用「設為 8」,不用「改變 8」?如果小鳥正在快速往下掉(速度 -10),改變 8 只變成 -2,還是在往下掉;設為 8 是直接換成往上飛。真的拍翅膀也是一樣,不管剛才掉多快,拍一下就往上。
💡 為什麼用「重複直到」而不是「重複無限次」?重複直到會自己停,停下來的那一刻就是「撞到了」,下面接一塊「廣播遊戲結束」剛好。用重複無限次的話,還要另外寫一段去判斷什麼時候結束。
💡 為什麼 y 要小於 -165 才算掉到地上?舞台最下面是 -180。小鳥的中心點在身體中間,身體還有一半在下面,所以中心到 -165 時,腳已經碰到地了。
✅ 檢查點:不按空白鍵,小鳥越掉越快;按空白鍵會往上飛一下。
步驟 3:水管——用分身生很多根

點「水管」拼四段,分身積木在控制類最下面:

- 綠旗:隱藏。
- 當收到「開始」:重複無限次 { 建立自己的分身、等待 2.2 秒 }。
- 當分身產生:定位到 x: 250、y: 隨機(下一步)→ 顯示 → 重複直到 x < -120 { x 改變 -4 } → 分數改變 1 → 重複直到 x < -240 { x 改變 -4 } → 分身刪除。
- 當收到「遊戲結束」:停止「這個物件的其它程式」。
💡 為什麼要用分身,不直接複製 5 個水管角色?複製角色的話,要改速度就得改 5 次,而且畫面上永遠只有那 5 根。分身是程式跑的時候才生出來的,一個角色的程式寫一次,要幾根就生幾根。
💡 為什麼本尊要隱藏?本尊只負責「生分身」,像工廠一樣。它如果顯示在畫面上,就會有一根不會動的水管卡在那裡,小鳥一碰就死。分身一出生就繼承本尊的樣子(隱藏),所以分身要自己「顯示」。
💡 為什麼分數寫在水管,而且切成兩個「重複直到」?小鳥站在 x = -120,水管飛過 -120 的那一刻就是「鑽過去了」。第一個迴圈飛到小鳥那裡、加 1 分,第二個迴圈繼續飛出畫面。每根水管只會經過一次,所以每根只會加 1 分。
💡 為什麼飛出畫面一定要「分身刪除」?沒刪的分身還在,只是看不到。每 2.2 秒生一根,玩一分鐘就有二十幾根在背景跑,電腦會越來越卡,Scratch 最多也只准 300 個分身。
💡 為什麼收到「遊戲結束」要停止「這個物件的其它程式」?本尊和每一根分身都會收到這個廣播:本尊停了就不再生新水管,分身停了就停在原地。整個畫面定格,玩家才看得到自己是撞在哪裡。
✅ 檢查點:水管分身的程式區有兩個「重複直到」,中間接加分。
步驟 4:隨機高度

把綠色運算類的「隨機取數 1 到 10」拖進分身那段「定位到」的 y 格子,改成 -70 到 70。
💡 為什麼放在「當分身產生」裡面?每根分身出生時都會重新抽一次數字,所以每根的縫高低都不一樣。如果只在綠旗抽一次,全部水管的縫都在同一個高度,一直按同樣的節奏就能玩下去。
💡 為什麼是 -70 到 70,不是 -180 到 180?造型中心是縫的中間,y 設成 150 時縫就跑到天花板旁邊,小鳥要一路從底下衝上去,來不及就撞了。範圍小一點,保證每根都「有機會過」。
✅ 檢查點:按綠旗,不按空白鍵,小鳥會越掉越快、掉到底說「遊戲結束!分數:0」;一直按空白鍵,水管一根一根飛過來、縫的高度都不一樣,鑽過去分數會加 1。
步驟 5:舞台和存檔

點右邊的「舞台」,拼:當綠旗被點擊 → 背景換成 Blue Sky。
💡 為什麼背景也要寫?現在只有一張背景看不出差別;等你加了「開始畫面」「結束畫面」,綠旗先換回遊戲背景,每一局才會從同一個畫面開始。
存檔:檔案 → 下載到你的電腦,再上傳到 Google Classroom。
💡 線上版 Scratch 不會自動幫你存到電腦裡,沒下載就關掉視窗,作品就不見了。
✅ 檢查點:按綠旗,背景換成 Blue Sky;作品已下載並上傳。
收不到、不會動?先查這幾件事
| 狀況 | 多半是 |
|---|---|
| 小鳥一直等速往下掉,不會加速 | 迴圈裡寫成「y 改變 -1」,沒有放「速度」變數進去 |
| 按空白鍵小鳥不往上 | 寫成「速度改變 8」,或空白鍵那段寫到別的角色 |
| 一按綠旗就結束 | 本尊水管沒隱藏,小鳥一開始就碰到它;或小鳥起點太低 |
| 只有一根水管 | 「建立分身」沒放在重複無限次裡面,或選成別的角色的分身 |
| 水管都在同一個高度 | 隨機取數放在綠旗那段,不是放在「當分身產生」 |
| 分數一次加很多 | 加分的積木放進了「重複直到」迴圈裡面 |
| 越玩越卡 | 分身飛出去之後沒有「分身刪除」 |
| 結束後水管還在跑 | 水管少了「當收到遊戲結束 → 停止這個物件的其它程式」 |
換成你自己的(必做)
- ☐ 換掉小鳥和背景(例如:蜜蜂穿過樹林、潛水艇穿過珊瑚)
- ☐ 水管換成自己畫的障礙物,顏色、形狀都可以改,但縫的中間要對準造型中心
- ☐ 至少改一條規則:重力大小(改變 -1)、拍翅膀力道(設為 8)、縫的大小、水管速度、隨機範圍,選一個改
- ☐ 改完自己玩三次,確定「難但過得去」
挑戰(做完的人選一題)
- ★ 撞到時播放音效,並換成另一個造型(小鳥暈倒)。
- ★★ 分數每到 5 分,水管變快一點(提示:新增變數「水管速度」,x 改變(0 − 水管速度))。
- ★★ 加一個「最高分」變數:遊戲結束時,如果分數 > 最高分,就把最高分設為分數。
- ★★★ 加開始畫面:綠旗先顯示標題,按空白鍵才廣播「開始」(提示:想想綠旗那段的「廣播開始」要搬到哪裡)。
互看檢查表(兩人互相打勾)
- ☐ 不按空白鍵,小鳥是越掉越快,不是等速往下
- ☐ 每根水管的縫高度都不一樣
- ☐ 鑽過一根只加 1 分
- ☐ 撞到後水管全部停住,小鳥說出分數
- ☐ 說得出:速度和 y 座標差在哪裡?為什麼拍翅膀用「設為」不用「改變」?
- ☐ 說得出:是誰廣播「開始」、誰收到後開始生水管
