--- tags: 2022 iThome 鐵人賽 title: 9/27 Arcade再進化-探索宇宙-射擊遊戲(2) AUTHOR: 謝熙智 --- # 第二章:增加回血功能、增加扣分機制、改變場景大小 [官方原始版本](https://makecode.com/_cX0c1KXU55wJ) [進化版本](https://makecode.com/_WozWp3FdE3zt) ## 以下是使用積木為例 ### 第一部分:增加回血功能 > 可以消耗10分,增加一條命。只要分數大於10分,按下B鍵即可回血。 1. 選取 控制器 裡的 當A鍵被按住 並將A改成B ![](https://i.imgur.com/vPoo4vE.png) ![](https://i.imgur.com/DoqUcaI.png) 2. 選取 邏輯 裡的 如果True那麼 並按下下方的 + 字號 ![](https://i.imgur.com/fFxVrM6.png) ![](https://i.imgur.com/xzrYjMZ.png) ![](https://i.imgur.com/TEX6QbU.png) 3. 選取 邏輯 裡的 且 0大於0 0小於0 並將 0大於0 0小於0 分別放於 且 的前後 ![](https://i.imgur.com/YKCAVf4.png) ![](https://i.imgur.com/1MOIifl.png) 4. 選取 資訊 裡的 生命和得分 ![](https://i.imgur.com/jrhK520.png) 5. 將 得分和生命 放於 0大於0 0小於0 的第一格中 ![](https://i.imgur.com/un8MQM5.png) 6. 將 0大於0 0小於0 的第二格中0 分別改成10跟5 ![](https://i.imgur.com/D1ZRNF8.png) 7. 選取 資訊 裡的 生命改變和得分改變 個複製一次 分別放於 如果 否則 ![](https://i.imgur.com/3Jy2qVw.png) ![](https://i.imgur.com/Nt4rdCY.png) 8. 將 如果 裡的 生命改變:1 得分改變:-10 否則 裡的 不變 ![](https://i.imgur.com/BpCjYhE.png) ### 第二部分:增加扣分機制 > 戰機碰到隕石,除了損血還會扣分。最低扣到0分。 1. 選取 邏輯 裡的 如果True那麼 否則 放在 當角色sprite類別player ![](https://i.imgur.com/fFxVrM6.png) ![](https://i.imgur.com/IruItFi.png) 2. 選取 邏輯 裡的 0=0 並改成大於 放在True ![](https://i.imgur.com/jYy9Zwm.png) 3. 選取 資訊 裡的 得分改變 放在 那麼 並把數字0改成-1 ![](https://i.imgur.com/4u2YTOS.png) 4. 選取 資訊 裡的 得分 放在 0大於0 的第一格 ![](https://i.imgur.com/jT9wnwX.png) 5. 選取 資訊 裡的 得分改變 放在 否則 數字不改 ![](https://i.imgur.com/9L5uxxp.png) ### 第三部分:改變場景大小 > 因場景加大,隕石生成不夠快,戰機也飛太慢,因此需要一併修改。 > 1. 選取 場景 裡的 貼圖地圖 並放在 當啟動時 ![](https://i.imgur.com/IqucBgl.png) 2. 將左下角的 寬:16 長:16 改為 寬:50 長:50 ![](https://i.imgur.com/Vl9GnGA.png) ![](https://i.imgur.com/SR0XFon.png) 3. 將圖全用成黑色 ![](https://i.imgur.com/uyxjplJ.png) ![](https://i.imgur.com/P5PdG0r.png) 4. 刪除 將飛船下面 設為120 ![](https://i.imgur.com/dW5SusY.png) 5. 選取 角色 裡的 角色mysprite的位置 X:0 Y:0 並改成 飛船 ![](https://i.imgur.com/GTnDIFK.png) ![](https://i.imgur.com/5P3kVwP.png) 6. 選取 數學 裡的 0x0 並複製 分別放入 X Y ![](https://i.imgur.com/2qwr5W7.png) ![](https://i.imgur.com/C8Xy10A.png) 7. 選取 場景 裡的 畫面寬度、高度 分別放於第一格 0 中 ![](https://i.imgur.com/BJWB9xI.png) ![](https://i.imgur.com/e7h6Ztw.png) 8. 改變 第二格 0 畫面寬度x2.5 畫面高度x3.3 ![](https://i.imgur.com/NFfBTfM.png) 9. 更改 當遊戲更新間格 1000到1500毫秒 改成 350到500 ![](https://i.imgur.com/9bchUB7.png) 10. 更改 當遊戲更新間格 500毫秒 改成 100 ![](https://i.imgur.com/6kxhm1Y.png) 11. 更改 將子彈X設為 隨機10到780 ![](https://i.imgur.com/RqVN6Yy.png) 12. 更改 控制器移動角色飛船速度 X:150 Y:150 ![](https://i.imgur.com/AVH2RH4.png) ## 以下是使用JAVASCRIPT來做 ```javascript= ### 第一部分:增加回血功能 controller.B.onEvent(ControllerButtonEvent.Pressed, function () { if (info.score() > 10 && info.life() < 5) { info.changeLifeBy(1) info.changeScoreBy(-10) } else { info.changeLifeBy(0) info.changeScoreBy(0) } }) ### 第二部分:增加扣分機制 sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) { scene.cameraShake(4, 500) otherSprite.destroy(effects.disintegrate) sprite.startEffect(effects.fire, 200) info.changeLifeBy(-1) if (info.score() > 0) { info.changeScoreBy(-1) } else { info.setScore(0) } }) ### 第三部分:改變場景大小(並更改隕石生成速度 飛船速度) 飛船 = sprites.create(sprites.space.spaceRedShip, SpriteKind.Player) 飛船.setPosition(scene.screenWidth() * 2.5, scene.screenHeight() * 3.3) controller.moveSprite(飛船, 150, 150) info.setLife(3) info.setScore(0) 飛船.setStayInScreen(true) effects.starField.startScreenEffect() scene.cameraFollowSprite(飛船) tiles.setCurrentTilemap(tilemap`層級5`) game.onUpdateInterval(randint(350, 500), function () { 子彈 = sprites.createProjectileFromSide(殞石[randint(0, 殞石.length - 1)], 10, randint(-10, 100)) 子彈.x = randint(10, 780) 子彈.setKind(SpriteKind.Enemy) }) game.onUpdateInterval(100, function () { 子彈 = sprites.createProjectileFromSide(殞石[randint(0, 殞石.length - 1)], 0, 75) 子彈.x = randint(10, 780) 子彈.setKind(SpriteKind.Enemy) })