iT邦幫忙

2022 iThome 鐵人賽

DAY 12
2

第二章:增加回血功能、增加扣分機制、改變場景大小

官方原始版本
進化版本

以下是使用積木為例

第一部分:增加回血功能

可以消耗10分,增加一條命。只要分數大於10分,按下B鍵即可回血。

  1. 選取 控制器 裡的 當A鍵被按住 並將A改成B

  2. 選取 邏輯 裡的 如果True那麼 並按下下方的 + 字號

  3. 選取 邏輯 裡的 且 0大於0 0小於0 並將 0大於0 0小於0 分別放於 且 的前後

  4. 選取 資訊 裡的 生命和得分

  5. 將 得分和生命 放於 0大於0 0小於0 的第一格中

  6. 將 0大於0 0小於0 的第二格中0 分別改成10跟5

  7. 選取 資訊 裡的 生命改變和得分改變 個複製一次 分別放於 如果 否則

  8. 將 如果 裡的 生命改變:1 得分改變:-10 否則 裡的 不變

第二部分:增加扣分機制

戰機碰到隕石,除了損血還會扣分。最低扣到0分。

  1. 選取 邏輯 裡的 如果True那麼 否則 放在 當角色sprite類別player

  2. 選取 邏輯 裡的 0=0 並改成大於 放在True

  3. 選取 資訊 裡的 得分改變 放在 那麼 並把數字0改成-1

  4. 選取 資訊 裡的 得分 放在 0大於0 的第一格

  5. 選取 資訊 裡的 得分改變 放在 否則 數字不改

第三部分:改變場景大小

因場景加大,隕石生成不夠快,戰機也飛太慢,因此需要一併修改。

  1. 選取 場景 裡的 貼圖地圖 並放在 當啟動時

  2. 將左下角的 寬:16 長:16 改為 寬:50 長:50

  3. 將圖全用成黑色

  4. 刪除 將飛船下面 設為120

  5. 選取 角色 裡的 角色mysprite的位置 X:0 Y:0 並改成 飛船

  6. 選取 數學 裡的 0x0 並複製 分別放入 X Y

  7. 選取 場景 裡的 畫面寬度、高度 分別放於第一格 0 中

  8. 改變 第二格 0 畫面寬度x2.5 畫面高度x3.3

  9. 更改 當遊戲更新間格 1000到1500毫秒 改成 350到500

  10. 更改 當遊戲更新間格 500毫秒 改成 100

  11. 更改 將子彈X設為 隨機10到780

  12. 更改 控制器移動角色飛船速度 X:150 Y:150

以下是使用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)
})

上一篇
Arcade再進化-虛擬鍵盤的妙用(2)
下一篇
Arcade再進化-迷宮產生器(2)
系列文
玩game學打code。街機程式設計再進化。微軟Arcade30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言