【花雕动手做】基于 Kitronik 可编程开发板之太空驱逐舰
2025-09-091218
AI 快速预览详细
Kitronik ARCADE是一款专为编程教学与创客实践设计的可编程游戏机开发板,支持图形化或JavaScript编程。它集成了彩色LCD显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE都能作为理想的硬件载体,助力创意实现。该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。
|
Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。 它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。 凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。 ![]() ![]() ![]() |







实验场景记录
1、按下 A 键发射子弹
python
[code]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)[/code]
创建一个子弹,从玩家战舰发射,速度为 -140(向上)。
添加一个炫酷的径向特效。
2、子弹击中敌人(得分)
python
[code]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)[/code]
3、玩家碰到敌人(扣血)
python
[code]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)[/code]
5、创建玩家战舰
python
[code]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[/code]
6、设置星空背景
python
[code]effects.star_field.start_screen_effect()[/code]
添加动态星空背景,营造太空氛围。
7、每隔0.5秒生成一个敌人
python
[code]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)[/code]
随机从小行星列表中选择一个图像。
从屏幕顶部以速度 75 向下飞来。
随机设置 X 坐标,制造不确定性。
打开网页版:https://arcade.makecode.com/,设置项目名称:太空驱逐舰
MicroPython实验参考代码
[code]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)[/code]