---
# System prepended metadata

title: Scratch小遊戲Whack-a-Mole game
tags: [Scratch]

---

# Scratch打地鼠遊戲：地鼠角色程式開發教學指引(Whack A Mole Game)

<iframe src="https://scratch.mit.edu/projects/1258401320/embed" allowtransparency="true" width="485" height="402" frameborder="0" scrolling="no" allowfullscreen></iframe>
:::success
## 專案目標：學會使用「分身控制」、「變數運用」與「隨機數」，讓地鼠動起來並能正確給分！
### 適合對象：Scratch 初學者（國中資訊科技課）
:::


## 🛠️ 先前準備：老師已經幫你做好了什麼？
:::info
在開始之前，老師已經幫大家架構好遊戲的「骨幹」，你可以先檢查一下：

* <font color="#E04324">計時器</font>：畫面右上方有 30 秒的倒數。
* <font color="#E04324">結束機制</font>：時間到（0秒）或 分數到（150分）遊戲會自動停止。
* <font color="#E04324">視覺特效</font>：獲勝時會出現 "YOU WIN"，失敗時出現 "GAME OVER"。
* <font color="#E04324">片頭片尾</font>：起始畫面會出現 3秒倒數以進入遊戲，遊戲結束會出現素材聲明。
:::
## 🤖 遊戲角色:
* 地鼠
* 鎚子
* 倒數計時
* text(You Win/Game Over)
* cover(片頭與片尾)
* 舞台


---

## 開啟Scratch程式
### 老師傳送的whackamole4students.sb3程式
>[!Tip]
>從<font color="#1936C9">"檔案"</font>--><font color="#1936C9">"從你的電腦挑選"</font>-->找到<font color="#1936C9">"whackamole4students.sbs"</font>
>![openthefiles1](https://hackmd.io/_uploads/rJ9so59mWx.png)
>![openthefiles2](https://hackmd.io/_uploads/H1qhj557-x.png)



## 你今天的任務是：讓地鼠角色活過來！

### 🚀 任務一：地鼠的本能反應 (基礎互動)
:::warning
當玩家拿槌子敲到地鼠時，地鼠應該要發出聲音並立刻躲起來。
:::


### 📋 實作步驟：

1. 點擊 <font color="#1936C9">地鼠1</font> 角色。
2. 找到 <font color="#1936C9">當分身產生</font> 積木。
3. 加入 <font color="#1936C9">重複無限次</font> 與 <font color="#1936C9">如果...那麼</font> 判斷。
4. 設定條件：<font color="#1936C9">如果 <碰到 (滑鼠) 且 (滑鼠被按下)></font>。
1. 達成條件 <font color="#1936C9">播放音效hit</font> 並更換 <font color="#1936C9">造型成地鼠4</font> (地鼠被打到的表情)
1. <font color="#1936C9">廣播訊息messeage1</font> 以啟動其他積木
1. 地鼠 <font color="#1936C9">等待0.3秒</font> 後 <font color="#1936C9">隱藏</font> ，並 <font color="#1936C9">造型換成地鼠1</font>
>[!Tip]
    ><font color="#1936C9"><(滑鼠被按下)> 且 碰到 (滑鼠)></font> 的組合，需使用<font color="#24E050">"運算"積木</font> 的 <font color="#24E050">< A 且 B ></font> 加上 <font color="#24CDE0"> "偵測"積木</font> 的 <font color="#24CDE0"><滑鼠鍵被按下?> </font>與 <font color="#24CDE0"><碰到...?></font>

🧩 積木參考位置：
![whackamole01](https://hackmd.io/_uploads/Bkvp1vSQZe.png)

---
### ⏱️ 任務二：地鼠的躲貓貓 (節奏控制)
:::warning
地鼠不能一直待在洞口。它必須<font color="#1936C9">「隱藏」</font>一段時間，再<font color="#1936C9">「出現」</font>一段時間。
:::


### 📋 實作步驟：

1. 在 <font color="#1936C9">當作為分身產生時</font> 建立另一個平行的腳本。
2. 加入 <font color="#1936C9">重複無限次</font>。
3. 讓地鼠隱藏，並使用 <font color="#1936C9">隨機取數 1 到 3 秒</font> 讓地鼠隨機鑽出。
4. 顯示後，加入 <font color="#1936C9">每等待 0.5 秒</font>，變換1次造型，在畫面上在停留2秒 (這是地鼠露臉的時間)。
5. 最後再次 <font color="#1936C9">隱藏</font> 並將 <font color="#1936C9">尺寸設為0%</font> ，避免隱藏時仍能被點擊到。

🧩 積木參考位置：
![whackamole02](https://hackmd.io/_uploads/B1eyeDBQbl.png)



---


### 💰 任務三：會給分的慷慨地鼠 (變數運用)
:::warning
打到地鼠如果沒加分，這就不是好玩的遊戲！我們要讓<font color="#1936C9">變數 Hits與變數Score 動起來</font>。
:::
>[!Note]
>什麼是變數？
>變數就像一個「貼有標籤的儲存盒」，幫程式記住重要的資訊。
>**1.標籤（名稱）是固定的：方便我們隨時呼叫它。**
>**2.內容（數值）像白板字：可以隨時被擦掉、換成新的。**
>不論是分數、血量或時間，只要資料會變動且需要被記住，就必須使用變數來方便程式重複取用！
![varities](https://hackmd.io/_uploads/SJBmzrqmWg.jpg)


### 📋 實作步驟：

1. 在「任務一」的程式中，當判定被擊中時，啟動變數Hits與Score的改變。
1. 點選舞台的程式:<font color="#1936C9">當收到廣播訊息message1</font>
1. 加入 <font color="#1936C9">變數 [Hits] 改變 1</font>。
1. 加入 <font color="#1936C9">變數 [Score] 改變 5</font>。  
1. 加入判斷式<font color="#1936C9">如果...那麼</font> 判斷分數是否達標(Score=150)
1. 如果達標，加入<font color="#1936C9">廣播訊息"youwin"</font>
>[!Important]
    >變數積木不要放錯囉! 此處為"**變數**<font color="E04324">**改變為...**</font>"，而非"**變數**<font color="E04324">**設為...**</font>"
    



🧩 積木參考位置：
![whackamole03](https://hackmd.io/_uploads/SJLA1vrXWx.png)

:::info
:bulb:
要用變數來製作「遊戲得分」非常簡單，我們只需要掌握**「歸零」與「累加」**這兩個關鍵動作：
製作得分功能的四個步驟：
    * <font color="#CF4434">**建立儲存盒：**</font> 在 Scratch 的「變數」積木區點選「建立一個變數」，命名為「得分」。這時畫面上就會出現一個分數表。
    * <font color="#CF4434">**遊戲開始先歸零（設定初始值）：** </font>在「當綠旗被點擊」下面，放上 變數 [得分] 設為 [0]。這樣每次重新玩，分數才會從 0 開始，不會累積舊的分數。
    * <font color="#CF4434">**達成目標就加分（改變數值）：** </font>在你的遊戲邏輯裡（例如：碰到金幣、擊中敵人），加上 變數 [得分] 改變 [1]。這代表盒子裡的數字會加 1。
    * <font color="#CF4434">**持續判斷：**</font> 通常會配合「如果...那麼」與「重複無限次」積木，讓電腦一直偵測角色是否該加分了。
:::
---


### 🧪 遊戲測試與除錯 (Debug)
:::danger
完成後，請按下綠旗測試遊戲，並檢查以下重點：
:::


| 檢查項目 | 狀況確認 | 
| -------- | -------- | 
| 擊中音效     | 打到地鼠時有沒有「地鼠叫聲」？     | 
| 次數累加     | (Hits)每次打到，分數是否有正確加 1 次？
| 分數累加     | (Score)每次打到，分數是否有正確加 5 分？     |
| 時間節奏     | 地鼠出現的速度會不會太快或太慢？     |
| 清理現場     | 遊戲結束後，地鼠有沒有乖乖消失？     |
>[!Tip]
>#### 小撇步：如果你發現分數一次跳很多分，可能是因為地鼠被打到後<font color="#1936C9">「隱藏」</font>得不夠快，可以試著把 <font color="#1936C9">等待2秒</font> 的時間縮短喔！

### 🏆 進階挑戰
:::warning
如果你已經完成了以上任務，可以試著挑戰：
* 閃金光的地鼠：建立一個<font color="#1936C9">新的訊息廣播</font>，讓少部分的地鼠可以加 20 分！
* 地鼠的反擊：如果地鼠出現太久沒被打到，反而會扣玩家的分數。
:::

---
## 🎮各角色程式積木參考
### 🧩舞台
![stage](https://hackmd.io/_uploads/HJwenE9mZx.png)


---

### 🧩cover(片頭片尾))
![cover](https://hackmd.io/_uploads/HJ--h4qXZe.png)


---
### 🧩text(You win/Game over)
![text](https://hackmd.io/_uploads/B1t4249Qbx.png)


---
### 🧩countdown(片頭倒數計時))
![countdown](https://hackmd.io/_uploads/HyjZ2E5QWl.png)


---
### 🧩hammer(鎚子)
![hammer](https://hackmd.io/_uploads/ryuf3Ncmbg.png)


---

### 🧩mole(地鼠)
![mole](https://hackmd.io/_uploads/HkhX3Ecm-x.png)

    
---
>[!Note]
>版權聲明:
>遊戲設計:©[CLIT Classroom](https://clitclassroom.github.io/)
>音效及音樂:[Pixabay](https://pixabay.com/)
>圖片生成: Google Gemini

