香蕉從天上掉下來,你用滑鼠讓猴子左右跑去接,接到一根加 1 分;香蕉掉到地上就再掉一根。小心壞人甲蟲,被牠砸到扣 2 分!吃到 10 根就過關。這次要學「接東西」這一類遊戲最重要的幾件事:接到加分、掉到地上重來、壞人扣分、分數到了就結束。

今天要做出來的作品

執行結果:東西掉下來、接到香蕉加分、被甲蟲砸到扣分、吃到 10 根過關

按下綠旗後:

  1. 猴子說「用滑鼠左右移動,接住香蕉!」,香蕉和甲蟲從上面隨機的位置往下掉。
  2. 猴子跟著滑鼠左右跑。接到香蕉 +1 分;香蕉掉到草地上就回到上面重掉;被甲蟲砸到扣 2 分。
  3. 分數到 10,背景換掉,香蕉和甲蟲消失,猴子說「吃飽了,過關!」。

老師上課會先打開 05_猴子吃香蕉.sb3 按一次綠旗,大家一起看成品長什麼樣子。 📥 下載本堂講義 PDF

學習目標

  • 會用「x 設為 鼠標的 x」讓角色跟著滑鼠左右跑
  • 會用「重複直到 碰到猴子 或 碰到地面」做出「掉下來,接到或掉到地上就停」
  • 會在迴圈下面用「如果 碰到猴子」判斷接到了才加分;知道怎麼做壞人扣分
  • 會讓舞台管分數:「等待直到 分數 > 9」→ 廣播「過關」→ 換背景、大家停下來
  • 複習:隨機取數、或、廣播、停止這個物件的其它程式

遊戲規則

項目規則
怎麼玩滑鼠左右移動,猴子跟著跑
接到香蕉+1 分,香蕉回到上面隨機的位置再掉
香蕉掉到地上不加分,回到上面再掉一根
被甲蟲砸到扣 2 分
什麼時候過關分數超過 9(吃到 10 根):背景換掉,全部停下來

步驟 1:準備背景和角色

  1. 開新專案,刪掉小貓。
  2. 選個背景 → Jungle;再選一張過關用的 Hearts
  3. 選個角色 → Monkey(名字「猴子」、尺寸 50)、Bananas(「香蕉」、尺寸 60)、Beetle(「甲蟲」、尺寸 55)。
  4. 點「選個角色」→「繪畫」,用矩形工具畫一條又寬又扁的綠色長方形當草地,名字改成「地面」,拖到舞台最下面。
  5. 變數類「建立一個變數」→「分數」,選「適用於所有角色」。

💡 為什麼地面要畫成一個「角色」?等一下香蕉要問「我碰到地面了嗎?」,「碰到」積木的選單只能選角色。畫在背景上,Scratch 分不出哪裡是地面。

💡 為什麼地面要橫跨整個舞台?香蕉會從隨機的 x 掉下來,地面只畫一半,掉在另一半的香蕉碰不到地面,就會一直往下掉,卡在舞台最底下不回來。

步驟 2:舞台——管分數、判斷過關

舞台的程式
  • 當綠旗被點擊 → 背景換成 Jungle → 分數設為 0 → 等待直到 分數 > 9廣播「過關」
  • 當收到訊息「過關」→ 背景換成 Hearts

💡 為什麼「過關了沒」交給舞台判斷?香蕉加分、甲蟲扣分,分數被好幾個角色改來改去。如果讓香蕉判斷「到 10 分了嗎」,萬一是別的東西讓分數剛好到 10,香蕉就不知道。舞台只負責盯著分數,一到就喊「過關」,誰加的分都一樣會過關。

💡 為什麼寫「> 9」而不是「= 10」?分數有加有減,也可能兩樣東西同一瞬間被接到。如果從 9 直接跳到 11,「= 10」就永遠等不到;「> 9」只要超過就算。

步驟 3:猴子——跟著滑鼠跑

猴子的程式
動作類的「x 設為」和「y 設為」
偵測類的「碰到」和「鼠標的 x」
  • 綠旗:y 設為 -95 → 說出「用滑鼠左右移動,接住香蕉!」2 秒 → 重複無限次(x 設為 鼠標的 x
  • 收到「過關」:停止「這個物件的其它程式」→ 說出「吃飽了,過關!」

💡 為什麼只設 x、不用「定位到 鼠標」?定位到鼠標會連上下一起跟,猴子會飛到天上去接香蕉,太簡單了。只讓 x 跟著滑鼠、y 固定在地面上,猴子只能左右跑,才像在地上接東西。

💡 為什麼收到「過關」要停止其它程式?跟著滑鼠的那個重複無限次還在跑。不停掉的話,過關畫面出來了,猴子還是一直跟著滑鼠跑來跑去。

步驟 4:香蕉——掉下來、接到加分、掉到地上重來

香蕉的程式
運算類的「隨機取數」和「或」

綠旗:顯示 → 重複無限次:

  1. 定位到 x:隨機取數 -200 到 200、y:170(回到最上面)
  2. 重複直到 碰到 猴子?或 碰到 地面?:y 改變 -6(往下掉)
  3. 如果 碰到 猴子? 那麼:分數改變 1 → 播放音效 Chomp

收到「過關」:隱藏 → 停止「這個物件的其它程式」。

💡 為什麼每一圈一開始都要「定位到最上面」?香蕉不管是被接到、還是掉到地上,下一根都要從天上重新掉。把「回到上面」放在每一圈的開頭,兩種情況都會回去,不用寫兩次。

💡 為什麼 x 要用隨機?每次都從同一個地方掉,玩家把猴子放著不動就能一直接到。隨機的位置才要眼明手快。

💡 為什麼「重複直到」要用「或」接兩個條件?香蕉掉下來只有兩種結局:被猴子接到、或掉到地上。任何一種發生就要停止往下掉,所以用「或」。少了「碰到地面」,沒接到的香蕉會一直掉到舞台最下面卡住。

💡 為什麼加分寫在迴圈下面的「如果 碰到猴子」,不寫在迴圈裡面?迴圈停下來有兩種可能,要再問一次「是因為碰到猴子嗎?」才知道要不要加分;是碰到地面的話就不加分,直接進下一圈重掉。如果把加分放進迴圈裡,香蕉碰到猴子的每一格畫面都會加一次分。

步驟 5:甲蟲——壞人扣分

甲蟲的程式

在角色區把香蕉的兩段程式拖到甲蟲身上複製過去,只改三個地方:

  1. y 改變 -4(甲蟲掉得慢一點,比較好閃)
  2. 分數改變 -2
  3. 音效換成 Chee Chee(到甲蟲的「音效」分頁,從音效庫加入 Chee Chee,猴子被砸到會叫)

💡 為什麼壞人的程式跟香蕉幾乎一樣?壞人也是「從上面掉下來,接到或掉到地上就重來」,差別只有「接到時加還是扣」。先把香蕉寫好再複製,只改數字,壞人就做好了;以後想加第二種壞人或加分道具,也是同樣的做法。

💡 為什麼甲蟲要掉得比香蕉慢?兩個掉的速度一樣時,常常同時到達,玩家根本來不及閃。慢一點,玩家看得到甲蟲快掉下來,才有機會判斷「這根香蕉要不要冒險去接」,遊戲才好玩。

✅ 檢查點:按綠旗,猴子跟著滑鼠左右跑;接到香蕉 +1、香蕉掉到草地上會回到上面、被甲蟲砸到扣 2 分;分數到 10 背景換成 Hearts、香蕉和甲蟲消失、猴子不再跟著滑鼠;再按綠旗分數回到 0。

步驟 6:存檔

檔案 → 下載到你的電腦,再上傳到 Google Classroom。

💡 線上版 Scratch 沒有登入不會幫你存檔。下課前沒下載,關掉分頁作品就不見了。

收不到、不會動?先查這幾件事

狀況多半是
猴子會飛上去用了「定位到 鼠標」,要改成「x 設為 鼠標的 x」
香蕉掉到最下面卡住不回來「重複直到」少了「或 碰到 地面?」;或地面沒有橫跨整個舞台
接一根香蕉分數加好幾分加分寫進了「重複直到」裡面,要搬到迴圈下面的「如果」
沒接到也加分迴圈下面少了「如果 碰到 猴子?」,直接加分了
每根香蕉都從同一個地方掉定位的 x 沒用「隨機取數」
到 10 分沒過關舞台少了「等待直到 分數 > 9」;或「過關」訊息名稱打錯
過關後香蕉還在掉、猴子還在跑收到「過關」只寫了隱藏或說話,少了「停止這個物件的其它程式」
第二次玩一開始就過關舞台綠旗少了「分數設為 0」

換成你自己的(必做)

  • ☐ 換掉角色:接東西的人、會掉的好東西、壞東西都換成你自己的
  • ☐ 換掉背景和過關畫面
  • ☐ 至少改一條規則:例如過關分數、掉的速度、壞人扣幾分,或掉到地上也扣 1 分

挑戰(做完的人選一題)

  • ★ 複製出第二根香蕉,讓天上同時掉兩根(想想:要改哪裡?答案是什麼都不用改)。
  • ★ 分數掉到 0 以下就「遊戲結束」:換一張遊戲結束的背景,所有東西停下來。
  • ★★ 分數越高香蕉掉得越快(提示:把「y 改變 -6」換成跟分數有關的算式)。
  • ★★ 加一個計時器:30 秒內吃到 10 根才算過關,時間到就遊戲結束。
  • ★★★ 做過關版本(舊版進階題):第一關只有香蕉;吃到 10 分進第二關(換背景,甲蟲出現);吃到 20 分進第三關(多一個加 5 分的水果盤);吃到 40 分以上顯示過關畫面、遊戲停止。提示:綠旗時先把甲蟲和水果盤隱藏,舞台用「等待直到」依序廣播「第二關」「第三關」「過關」,收到訊息的角色才顯示出來開始掉。

互看檢查表(兩人互相打勾)

  • ☐ 猴子只會左右跑,不會飛上天
  • ☐ 接到一根香蕉只加 1 分;沒接到的香蕉掉到地上不加分,而且會回到上面重掉
  • ☐ 被壞人砸到會扣分,而且壞人掉得比較慢、閃得掉
  • ☐ 到了過關分數會換背景、所有東西停下來;再按綠旗能重玩
  • ☐ 說得出:每吃到一根香蕉加一分的程式是哪一塊?為什麼放在迴圈下面?
  • ☐ 說得出:是在盯分數、廣播「過關」、收到後做了什麼