【花雕动手做】基于Kitronik游戏机开发板之太空探索游戏
Kitronik ARCADE 使用 Microsoft MakeCode 平台,具有以下优势:
图形化编程界面:适合初学者,支持拖拽式编程。
即时模拟器:可以实时测试游戏效果。
硬件兼容性:可部署到 Kitronik ARCADE 设备,实现实体游戏体验。
支持 Python/JavaScript:便于进阶学习。
【花雕动手做】基于Kitronik游戏机开发板之太空探索游戏
作为学习、练习与尝试,这里创建一个太空探索的小游戏。打开网页版:https://arcade.makecode.com/,设置项目名称:太空探索
JavaScript 实验代码
controller.A.onEvent(ControllerButtonEvent.Pressed, function on_a_pressed() {
projectile = sprites.createProjectileFromSprite(img`
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . 2 2 2 2 . . .
. . . . . . . 2 2 1 1 1 1 2 . .
. . . . 2 2 3 3 1 1 1 1 1 1 . .
. . 3 3 3 3 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 1 1 1 1 1 1 1 1 . .
. . 3 3 2 2 3 1 1 1 1 1 1 1 . .
. . . . . . 2 2 3 1 1 1 1 2 . .
. . . . . . . . . 2 2 2 2 . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
`, mySprite, 79, 3)
})
info.onScore(10, function on_on_score() {
})
controller.B.onEvent(ControllerButtonEvent.Pressed, function on_b_pressed() {
projectile2 = sprites.createProjectileFromSprite(img`
. . . . . . . . . . . . . . . . 8 .
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 8
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 8
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8
9 9 1 1 1 1 1 1 1 1 1 1 1 1 6 6 9 8
9 9 1 1 1 1 1 1 1 1 1 1 1 1 6 6 9 8
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 8
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 8
. . . . . . . . . . . . . . . 8 6 8
. . . . . . . . . . . . . . . . 8 .
. . . . . . . . . . . . . . . . . .
`, mySprite, 79, 3)
music.play(music.createSoundEffect(WaveShape.Square, 1600, 1, 255, 0, 300, SoundExpressionEffect.None, InterpolationCurve.Curve), music.PlaybackMode.UntilDone)
})
info.onLifeZero(function on_life_zero() {
game.gameOver(false)
sprites.destroy(mySprite)
game.splash("Game Over")
music.stopAllSounds()
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function on_on_overlap(sprite: Sprite, otherSprite: Sprite) {
info.changeLifeBy(1)
sprites.destroy(mySprite4)
})
sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function on_on_overlap2(sprite2: Sprite, otherSprite2: Sprite) {
info.changeScoreBy(1)
sprites.destroy(mySprite2)
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function on_on_overlap3(sprite3: Sprite, otherSprite3: Sprite) {
info.changeLifeBy(-1)
music.play(music.createSoundEffect(WaveShape.Noise, 3300, 1400, 255, 0, 150, SoundExpressionEffect.Warble, InterpolationCurve.Linear), music.PlaybackMode.UntilDone)
})
let mySprite2 : Sprite = null
let mySprite4 : Sprite = null
let projectile2 : Sprite = null
let projectile : Sprite = null
let mySprite : Sprite = null
mySprite = sprites.create(assets.image`
Ship
`, SpriteKind.Player)
controller.moveSprite(mySprite, 100, 100)
info.setLife(3)
scene.setBackgroundImage(assets.image`
Space
`)
music.play(music.createSong(assets.song`
My Beat
`), music.PlaybackMode.InBackground)
game.onUpdateInterval(500, function on_update_interval() {
mySprite2 = sprites.create(assets.image`
Enemy Ship
`, SpriteKind.Enemy)
mySprite2.setVelocity(-100, 5)
mySprite2.setPosition(randint(15, 145), randint(15, 105))
})
game.onUpdateInterval(10000, function on_update_interval2() {
mySprite4 = sprites.create(assets.image`
Battery
`, SpriteKind.Food)
mySprite4.setVelocity(-100, 5)
mySprite4.setPosition(randint(15, 145), randint(15, 105))
})
【花雕动手做】基于Kitronik游戏机开发板之太空探索游戏
这段 Arcade MakeCode 的 JavaScript 代码构建了一个经典的《太空探索游戏》。玩家驾驶飞船在太空中移动,发射子弹击毁敌人,收集电池补充生命,并在生命耗尽时游戏结束。游戏核心机制如下:1、玩家控制与初始化
javascript
mySprite = sprites.create(assets.image`Ship`, SpriteKind.Player)
controller.moveSprite(mySprite, 100, 100)
info.setLife(3)
scene.setBackgroundImage(assets.image`Space`)
创建玩家飞船精灵,设为 SpriteKind.Player。
启用方向键控制移动,速度为 100。
设置初始生命值为 3。
设置太空背景图。
2、背景音乐播放
javascript
music.play(music.createSong(assets.song`My Beat`), music.PlaybackMode.InBackground)
播放背景音乐 My Beat,在后台持续播放。
3、发射武器机制
A 键发射普通子弹
javascript
controller.A.onEvent(ControllerButtonEvent.Pressed, function on_a_pressed() {
projectile = sprites.createProjectileFromSprite(img`...`, mySprite, 79, 3)
})
按 A 键从飞船发射一枚普通子弹,速度为 (79, 3)。
B 键发射特殊子弹 + 音效
javascript
controller.B.onEvent(ControllerButtonEvent.Pressed, function on_b_pressed() {
projectile2 = sprites.createProjectileFromSprite(img`...`, mySprite, 79, 3)
music.play(music.createSoundEffect(...), music.PlaybackMode.UntilDone)
})
按 B 键发射特殊子弹并播放激烈音效。
4、敌人与道具生成
敌人飞船(每 0.5 秒)
javascript
game.onUpdateInterval(500, function on_update_interval() {
mySprite2 = sprites.create(assets.image`Enemy Ship`, SpriteKind.Enemy)
mySprite2.setVelocity(-100, 5)
mySprite2.setPosition(randint(15, 145), randint(15, 105))
})
每 500 毫秒生成一个敌人飞船,速度为 (-100, 5),从右向左飞行。
电池道具(每 10 秒)
javascript
game.onUpdateInterval(10000, function on_update_interval2() {
mySprite4 = sprites.create(assets.image`Battery`, SpriteKind.Food)
mySprite4.setVelocity(-100, 5)
mySprite4.setPosition(randint(15, 145), randint(15, 105))
})
每 10 秒生成一个电池道具,玩家可收集以恢复生命。
5、碰撞事件处理
子弹击中敌人
javascript
sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function on_on_overlap2(...) {
info.changeScoreBy(1)
sprites.destroy(mySprite2)
})
子弹击中敌人后得分 +1,并销毁敌人。
玩家碰到敌人
javascript
sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function on_on_overlap3(...) {
info.changeLifeBy(-1)
music.play(music.createSoundEffect(...), music.PlaybackMode.UntilDone)
})
玩家与敌人碰撞后生命 -1,并播放受伤音效。
玩家收集电池
javascript
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function on_on_overlap(...) {
info.changeLifeBy(1)
sprites.destroy(mySprite4)
})
玩家收集电池后生命 +1,并销毁电池道具。
6、游戏结束机制
javascript
info.onLifeZero(function on_life_zero() {
game.gameOver(false)
sprites.destroy(mySprite)
game.splash("Game Over")
music.stopAllSounds()
})
当生命值为 0:
游戏失败。
销毁玩家飞船。
显示“Game Over”提示。
停止所有音乐。
【花雕动手做】基于Kitronik游戏机开发板之太空探索游戏
图形编程参考实验程序通过模拟器,调试与模拟运行
页:
[1]