# Scratch 07: 土耳其冰淇淋 ###### tags: `捲耳貓兒童程式創作學苑`, `Scratch` 📅 Update date: 2024-03-02 ## Step 1. 選擇背景 可以在 Scratch 內建的圖庫中選擇 **Outdoors(戶外)** 標籤 選一張喜歡的圖片,例如 Boardwalk(木板路)   ## Step 2. 設定遊戲素材 ### 2-1. 下載素材 請先點擊 [**【雲端資料夾: 土耳其冰淇淋】**](https://drive.google.com/drive/folders/1snniXkvgO683Vs6p093M644avIBLU_rQ?usp=sharing) 下載整個資料夾後,解壓縮到本機的 **下載項目** ### 2-2. 土耳其老闆 上傳: **土耳其老闆**  擺放 **土耳其老闆**,並把他的 Size 設為 60(見下圖)  請點選【土耳其老闆】 ➡️ 初始化【土耳其老闆】的程式 當遊戲開始(綠色旗子被按下)時 (1) 把土耳其老闆放到目前畫面中的位置 (直接在 Motions 拉一個 `go to x: __, y: __` 這個 x, y 數值 Scratch 會幫你自動填入) (2) 把土耳其老闆放到目前畫面中的位置 `go to back layer` 意思是:移到【下方圖層】 因為老闆會站在餐車後面,所以需要做圖層的設定  ### 2-3. 冰淇淋攤販車 上傳: **冰淇淋攤販車** 之後,擺放: **冰淇淋攤販車**,並把它的 Size 設為 80(見下圖)  ➡️ **冰淇淋攤販車** 的【初始化】程式如下  ### 2-4. 夾子 上傳: **夾子** 之後,擺放: **夾子** – Size: 100 – Direction: 170(也可以按一下數字 90,用滑鼠調整合適的角度)  ➡️ **夾子** 的【初始化】程式如下  ### 2-5. 冰淇淋 上傳: **冰淇淋** 之後,擺放: **冰淇淋** ➡️ 大約放在夾子末端、圓弧狀的位置就好(見下圖) – Size: 30 – Direction: 90  ➡️ **冰淇淋** 的【初始化】程式如下  需要用到 `go to front layer`,意思是:移到【上方圖層】 因為我們想讓 **冰淇淋** 顯示在 **夾子** 前面 ## Step 3. 撰寫遊戲程式 ### 3-1. 旋轉冰淇淋 請先點擊【冰淇淋】 PS: 我們先規劃一個最簡單的功能:「讓 **冰淇淋** 能夠 **旋轉**」 接著,按一下遊戲視窗下方 Direction: 90 的數字【90】 可以用滑鼠試試看調整不同角度 ⭕: 冰淇淋在某些角度可以黏在夾子上,這是 OK 的  ❌: 冰淇淋在某些角度會脫離夾子,我們不希望看到這畫面  **冰淇淋的合理角度** ➡️ 沒有標準答案 可能根據擺放的位置不同,而會略有差異 需要自己【測試】一下 ➡️ 當 角度(Direction)介於 45 ~ 135 之間,冰淇淋都能黏在夾子上 因此,我們可以設計一段程式,做到以下功能: 「`讓【冰淇淋的角度 (Direction) 】從 45 慢慢增加到 135,再從 135 慢慢減少到 45`」 首先,到 Variables 建立變數 `冰淇淋旋轉角度`  接著,在【冰淇淋】的程式新增 **下圖藍色框框** 的積木  之後,繼續在【冰淇淋】的程式新增 **下圖黑色箭頭 & 黑色框框** 的積木  ### 3-2. 拋接冰淇淋 請先點擊【冰淇淋】 想像你在土耳其冰淇淋店 手伸過去,接近冰淇淋的時候,老闆才會表演特技(tricks) 因此,如果我們想讓玩家用【滑鼠】當成【手】 當【滑鼠 **接近冰淇淋** 時】 表演某些特技,讓玩家不會輕易拿到冰淇淋 稍微調整一下【冰淇淋】的程式  ### 3-3. 模組化: 使用 Blocks 請先點擊【冰淇淋】 當積木(程式)功能越加越多、更佳複雜 看起來就會頭昏眼花 「模組化」是程式設計的重要概念 把「一件事」放到同一個模組(module)或區塊(block) 程式碼就會乾淨、簡潔許多! 此外,模組也可以【重複使用】 ➡️ 延伸閱讀: [模組化設計](https://zh.wikipedia.org/zh-tw/%E6%A8%A1%E7%B5%84%E5%8C%96%E8%A8%AD%E8%A8%88) 請同學依序點擊 **My Blocks**、**Make a Block** 新增一個【旋轉冰淇淋】的 block:  之後,請仿照上面的方式 新增一個【拋接冰淇淋】的 block 最後,把黑框內的程式,搬移到對應的 block 【模組化】就完成囉(可參考下方兩張圖)   ### 3-4. 使用隨機數: 增加遊戲隨機性 請先點擊【冰淇淋】 目前為止,雖然已經可以讓 **冰淇淋** 表演【旋轉、拋接】的 tricks 但也只能算是「固定的動畫」(旋轉→拋接→旋轉→拋接→ ...) 看久了就略顯無聊 請再回想: 土耳其老闆如何和客人互動 🤔 或許是➡️ 你不知道 **哪一秒** 會「瞬間移動」 所以覺得有趣~ 對吧 因此,我們可以加上 「等待隨機秒數」和「隨機表演特技(旋轉 or 拋接)」的功能 目的是增加遊戲的【隨機性、不可預測性】 應該會更有趣一些 請先拉出這些會用到的積木  之後,組裝成下列程式 意思是: 先等待隨機秒數(0.1 ~ 0.3) 再抽 1 ~ 2 號 若抽到 1,先旋轉;若抽到 2,先拋接  ### 3-5. 提高遊戲難度: 讓冰淇淋跟著夾子走 請先點擊【夾子】  新增兩個 Variables (變數): `夾子X` 和 `夾子Y` 選擇 For all sprites ➡️ 為了讓冰淇淋知道夾子的位置  再來請到 Events (事件) 點擊新增一個 broadcast 積木,取名為【移動】  接著,請點擊【夾子】 可參考下圖,完成夾子的程式  相對的,需要讓冰淇淋接收到【移動】訊息後跟著移動 請點擊【冰淇淋】,並參考下圖,修改它的程式  ## 功能展示 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up