# 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