回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕动手做】Kitronik 可编程开发板基于 ARCADE MakeCode 之太空驱逐舰 简单

头像 驴友花雕 2025.09.09 5 0

Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。

它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。

凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。

 

00 (2).jpg
00 (3).jpg
00 (4).jpg

作为学习、练习与尝试,这里创建一个太空驱逐舰的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:太空驱逐舰

MicroPython实验参考代码

 

代码
def on_a_pressed():
    global projectile
    projectile = sprites.create_projectile_from_sprite(img("""
            . . . . . . . .
            . . . . . . . .
            . . . . . . . .
            . . . . . . . .
            . . . 7 7 . . .
            . . . 7 7 . . .
            . . . 7 7 . . .
            . . . 7 7 . . .
            """),
        ship,
        0,
        -140)
    projectile.start_effect(effects.cool_radial, 100)
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)

def on_on_overlap(sprite, otherSprite):
    sprite.destroy()
    otherSprite.destroy(effects.disintegrate)
    info.change_score_by(1)
sprites.on_overlap(SpriteKind.projectile, SpriteKind.enemy, on_on_overlap)

def on_on_overlap2(sprite2, otherSprite2):
    scene.camera_shake(4, 500)
    otherSprite2.destroy(effects.disintegrate)
    sprite2.start_effect(effects.fire, 200)
    info.change_life_by(-1)
sprites.on_overlap(SpriteKind.player, SpriteKind.enemy, on_on_overlap2)

projectile: Sprite = None
ship: Sprite = None
asteroids = [sprites.space.space_small_asteroid1,
    sprites.space.space_small_asteroid0,
    sprites.space.space_asteroid0,
    sprites.space.space_asteroid1,
    sprites.space.space_asteroid4,
    sprites.space.space_asteroid3]
ship = sprites.create(sprites.space.space_red_ship, SpriteKind.player)
ship.set_stay_in_screen(True)
ship.bottom = 120
controller.move_sprite(ship, 100, 100)
info.set_life(3)
effects.star_field.start_screen_effect()

def on_update_interval():
    global projectile
    projectile = sprites.create_projectile_from_side(asteroids[randint(0, len(asteroids) - 1)], 0, 75)
    projectile.set_kind(SpriteKind.enemy)
    projectile.x = randint(10, 150)
game.on_update_interval(500, on_update_interval)

这段代码是用 MakeCode Arcade 编写的一个 太空驱逐舰射击游戏 的核心逻辑。玩家控制一艘太空战舰,在星空背景下移动并发射子弹,击毁飞来的小行星(敌人),同时避免与它们碰撞。代码逐段解析

1、按下 A 键发射子弹
python
def on_a_pressed():
   global projectile
   projectile = sprites.create_projectile_from_sprite(img("""..."""), ship, 0, -140)
   projectile.start_effect(effects.cool_radial, 100)
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
创建一个子弹,从玩家战舰发射,速度为 -140(向上)。

添加一个炫酷的径向特效。

2、子弹击中敌人(得分)
python
def on_on_overlap(sprite, otherSprite):
   sprite.destroy()  # 销毁子弹
   otherSprite.destroy(effects.disintegrate)  # 敌人爆炸特效
   info.change_score_by(1)  # 得分+1
sprites.on_overlap(SpriteKind.projectile, SpriteKind.enemy, on_on_overlap)

3、玩家碰到敌人(扣血)
python
def on_on_overlap2(sprite2, otherSprite2):
   scene.camera_shake(4, 500)  # 屏幕震动
   otherSprite2.destroy(effects.disintegrate)  # 敌人爆炸
   sprite2.start_effect(effects.fire, 200)  # 玩家着火特效
   info.change_life_by(-1)  # 扣除1点生命
sprites.on_overlap(SpriteKind.player, SpriteKind.enemy, on_on_overlap2)

5、创建玩家战舰
python
ship = sprites.create(sprites.space.space_red_ship, SpriteKind.player)
ship.set_stay_in_screen(True)  # 限制在屏幕内
ship.bottom = 120  # 初始位置靠近底部
controller.move_sprite(ship, 100, 100)  # 启用移动控制
info.set_life(3)  # 设置生命值为3

6、设置星空背景
python
effects.star_field.start_screen_effect()
添加动态星空背景,营造太空氛围。

7、每隔0.5秒生成一个敌人
python
def on_update_interval():
   global projectile
   projectile = sprites.create_projectile_from_side(asteroids[randint(0, len(asteroids) - 1)], 0, 75)
   projectile.set_kind(SpriteKind.enemy)
   projectile.x = randint(10, 150)
game.on_update_interval(500, on_update_interval)
随机从小行星列表中选择一个图像。

从屏幕顶部以速度 75 向下飞来。

随机设置 X 坐标,制造不确定性。

图形编程参考实验程序

 

77.jpg

通过模拟器,调试与模拟运行

 

 

00205-.gif

 

实验场景记录

 

78 (1).jpg
78 (2).jpg
78 (3).jpg

评论

user-avatar
icon 他的勋章
    展开更多