飛機打BOSS

https://makecode.com/_iM37DUgrqMFp


namespace SpriteKind {

export const 敵人子彈 = SpriteKind.create()

export const kind_敵人子彈 = SpriteKind.create()

export const 血量 = SpriteKind.create()

}

sprites.onOverlap(SpriteKind.kind_敵人子彈, SpriteKind.Player, function (sprite, otherSprite) {

sprite.destroy()

自己血量 += -1

scene.cameraShake(4, 100)

})

controller.A.onEvent(ControllerButtonEvent.Pressed, function () {

自己子彈 = sprites.createProjectileFromSprite(img`

. 2 2 2 .

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

. 2 2 2 .

`, mySprite, 50, -50)

自己子彈 = sprites.createProjectileFromSprite(img`

. 2 2 2 .

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

. 2 2 2 .

`, mySprite, 0, -50)

自己子彈 = sprites.createProjectileFromSprite(img`

. 2 2 2 .

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

. 2 2 2 .

`, mySprite, -50, -50)

})

sprites.onOverlap(SpriteKind.Projectile, SpriteKind.kind_敵人子彈, function (sprite, otherSprite) {

sprite.destroy()

otherSprite.destroy()

})

sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, otherSprite) {

sprite.destroy()

敵人血量 += -1

})

let 敵人子彈: Sprite = null

let 敵我Y差異 = 0

let 敵我X差異 = 0

let 自己子彈: Sprite = null

let mySprite: Sprite = null

mySprite = sprites.create(img`

. . . . . . f f f f . . . . . .

. . . . f f e e e e f f . . . .

. . . f e e e f f e e e f . . .

. . f f f f f 2 2 f f f f f . .

. . f f e 2 e 2 2 e 2 e f f . .

. . f e 2 f 2 f f 2 f 2 e f . .

. . f f f 2 2 e e 2 2 f f f . .

. f f e f 2 f e e f 2 f e f f .

. f e e f f e e e e f e e e f .

. . f e e e e e e e e e e f . .

. . . f e e e e e e e e f . . .

. . e 4 f f f f f f f f 4 e . .

. . 4 d f 2 2 2 2 2 2 f d 4 . .

. . 4 4 f 4 4 4 4 4 4 f 4 4 . .

. . . . . f f f f f f . . . . .

. . . . . f f . . f f . . . . .

`, SpriteKind.Player)

mySprite.setPosition(75, 80)

mySprite.setFlag(SpriteFlag.StayInScreen, true)

controller.moveSprite(mySprite, 60, 60)

scene.cameraFollowSprite(mySprite)

let boss = sprites.create(img`

. . . . . . . . . . b 5 b . . .

. . . . . . . . . b 5 b . . . .

. . . . . . b b b b b b . . . .

. . . . . b b 5 5 5 5 5 b . . .

. . . . b b 5 d 1 f 5 5 d f . .

. . . . b 5 5 1 f f 5 d 4 c . .

. . . . b 5 5 d f b d d 4 4 . .

. b b b d 5 5 5 5 5 4 4 4 4 4 b

b d d d b b d 5 5 4 4 4 4 4 b .

b b d 5 5 5 b 5 5 5 5 5 5 b . .

c d c 5 5 5 5 d 5 5 5 5 5 5 b .

c b d c d 5 5 b 5 5 5 5 5 5 b .

. c d d c c b d 5 5 5 5 5 d b .

. . c b d d d d d 5 5 5 b b . .

. . . c c c c c c c c b b . . .

. . . . . . . . . . . . . . . .

`, SpriteKind.Enemy)

boss.setPosition(80, 0)

effects.starField.startScreenEffect()

boss.setFlag(SpriteFlag.StayInScreen, true)

let 自己血量 = 5

let 敵人血量 = 5

game.onUpdate(function () {

if (自己血量 == 0) {

game.over(false)

}

if (敵人血量 == 0) {

game.over(true)

}

})

game.onUpdateInterval(500, function () {

敵我X差異 = mySprite.x - boss.x

敵我Y差異 = mySprite.y - boss.y

boss.setVelocity(敵我X差異, 敵我Y差異 - 40)

敵人子彈 = sprites.createProjectileFromSprite(img`

. 8 8 8 .

8 8 8 8 8

8 8 8 8 8

8 8 8 8 8

. 8 8 8 .

`, boss, 敵我X差異 * 4, 敵我Y差異 * 4)

敵人子彈.setKind(SpriteKind.kind_敵人子彈)

})