这段 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”提示。
停止所有音乐。
|