飛機打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_敵人子彈)
})