# Scratch 05: 星際迷航 ###### tags: `捲耳貓兒童程式創作學苑`, `Scratch` 📅 Update date (v1): 2024-02-18, step. 1~11 📅 Update date (v2): 2024-02-25, step. 12~17 製作遊戲前,請先到以下連結下載今天會用到的素材 🐱 ⬇️⬇️⬇️ [【飛機素材(按此造訪)】](https://drive.google.com/drive/folders/10F3zqE9TrLn6h7NlUfTB385Cn4obxrp5?usp=drive_link) ## 1. 設定背景 使用 Scratch 內建的【Galaxy】  ## 2. 上傳飛機圖片  ## 3. 上傳飛彈圖片  ## 4. 方向鍵:前/後/左/右 對應的事件  ## 5. 建立兩個 Variables: X 和 Y X 和 Y 代表【飛機的公開位置】  ## 6. 遊戲開始時,設定飛機的位置  ## 7. 當飛機移動時,改變飛機的公開位置 新增【藍 & 紅色色箭頭】指的 8 個積木 紅色箭頭:Update 飛機的公開位置 藍色箭頭:傳送指令【follow me】(讓飛彈知道)  ## 8. 飛彈/遊戲開始時,先藏起來  ## 9. 飛彈/跟隨飛機 當收到【follow me】指令 讓【飛彈】移動到【飛機的公開位置 (X, Y)】  ## 10. 飛彈/發射飛彈(每次一枚) 當【按下空白鍵】 顯示、發射飛彈、消失、回到飛機的公開位置   ## 11. 飛彈/連續發射飛彈 改造一下 Step 10. 的程式 只要利用 Create clone 並在 repeat 20 的迴圈中偵測【是否重複按下空白鍵】 連續發射飛彈的功能便輕鬆完成了   ## 12. 上傳/敵機1號、敵機2號、敵方飛彈1、敵方飛彈2 * 敵機1號:Size 可改為 50 * 敵機2號:Size 可改為 40 * 敵方飛彈1:Size 可改為 20 * 敵方飛彈2:Size 可改為 20 ## 13. 敵機1號/往下移動,並通知敵方飛彈1發射 在 My Blocks 新增【隨機左右移動】的程式區塊(block) - 如果:x>0(敵機在右邊) 讓【敵機1號】移動到【左邊】 左邊 ➡️ i.e. 自己的 x +【-80~-40 的隨機數字】 - 否則:x≦0(敵機在左邊或中間) 讓【敵機1號】移動到【右邊】  在 Variables 新增變數(variable):【敵1X】和【敵1Y】 並在 Events 的 broadcast 新增【敵機1號進攻】  ## 14. 敵方飛彈1/跟隨,發射,連續發射 ### 敵方飛彈1/跟隨 遊戲開始時,跟著【敵機一號的位置】(x: 敵1X, y: 敵1Y)  ### 敵方飛彈1/發射 【敵機1號】會用【broadcast **敵機1號進攻**】通知【敵方飛彈1】發射(往下移動) 因此,收到【**敵機1號進攻**】的訊息時 連續發射六枚飛彈 – 重複 6 輪:飛彈 **往下移動** – 再複製一個新的飛彈(下方【連續發射】會提到如何寫)  ### 敵方飛彈1/連續發射 當原本的飛彈已經往下移動 15(change y by -15) 複製出來的新飛彈才剛出來(x: 敵1X, y: 敵1Y-75) 因此視覺上,會有看起來「連續發射」的樣子  ## 15. 敵方飛彈1/重複遊玩 新增一個 block: 取名為【攻擊】  原本的【遊戲開始(當綠旗被按下)】 改為重複攻擊 3 次 如此一來 當敵機1號消失後(第一次、第二次的 repeat 結束之後) 又可以從 **再次最上方出現**、往下移動並攻擊  ## 16. 敵機2號/程式碼 為了增進遊戲體驗,設計更多敵方戰機 我們可以增加敵機2號! 先照搬【敵機一號】的程式碼 但要注意以下兩件事: 1) 敵1X 改為 敵2X,敵1Y 改為 敵2Y 2) 敵機1號進攻 改為 敵機2號進攻 ### 16-1. 敵機2號/Block: 隨機左右移動  ### 16-2. 敵機2號/攻擊  ### 16-3. 敵機2號/玩法:三回合的攻擊  ## 17. 敵方飛彈2/程式碼 ### 17-1. 敵方飛彈2/跟隨  ### 17-2. 敵方飛彈2/發射飛彈  ### 17-3. 敵方飛彈2/重複發射飛彈  ### 18. 結果展示 
×
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