驴友花雕 发表于 2025-9-5 17:42:00

【花雕动手做】基于Kitronik可编程开发板之太空飞机游戏

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

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

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







驴友花雕 发表于 2025-9-5 17:47:34

【花雕动手做】基于Kitronik可编程开发板之太空飞机


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

MicroPython实验参考代码



def on_a_pressed():
    global projectile
    projectile = sprites.create_projectile_from_sprite(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . 8 8 . . . . . . .
            . . . . 3 2 4 5 5 4 9 3 . . . .
            . . . . 9 b 9 5 5 9 b 9 9 9 . .
            . . . . . . . 8 8 . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            """),
      mySprite,
      200,
      0)
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)

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

def on_on_overlap2(sprite2, otherSprite2):
    mySprite2.destroy()
    scene.camera_shake(4, 500)
    info.change_life_by(-1)
sprites.on_overlap(SpriteKind.player, SpriteKind.enemy, on_on_overlap2)

mySprite2: Sprite = None
projectile: Sprite = None
mySprite: Sprite = None
mySprite = sprites.create(img("""
      ..ccc.........ffffff....
      ..f4cc.......fcc22ff....
      ..f44cc...fffccccff.....
      ..f244cccc22224442cc....
      ..f224cc2222222244b9c...
      ..cf2222222222222b999c..
      .c22c222222222b11199b2c.
      f22ccccccc222299111b222c
      fffffcc222c222222222222f
      .....f2222442222222222f.
      ....f222244fc2222222ff..
      ...c222244ffffffffff....
      ...c2222cfffc2f.........
      ...ffffffff2ccf.........
      .......ffff2cf..........
      ........fffff...........
      """),
    SpriteKind.player)
controller.move_sprite(mySprite, 200, 200)
mySprite.set_stay_in_screen(True)
info.set_life(5)

def on_update_interval():
    global mySprite2
    mySprite2 = sprites.create(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . 2 2 2 2 . . . . . . . . .
            . . 2 1 1 1 1 2 2 . . . . . . .
            . . 1 1 1 1 1 1 3 3 2 2 . . . .
            . . 1 1 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 3 2 2 3 3 . .
            . . 2 1 1 1 1 3 2 2 . . . . . .
            . . . 2 2 2 2 . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            """),
      SpriteKind.enemy)
    mySprite2.set_velocity(-100, 0)
    mySprite2.set_position(160, randint(5, 115))
    mySprite2.set_flag(SpriteFlag.AUTO_DESTROY, True)
game.on_update_interval(1000, on_update_interval)

驴友花雕 发表于 2025-9-5 17:53:33

【花雕动手做】基于Kitronik可编程开发板之太空飞机

太空飞机游戏代码解读
这是一个经典的太空射击游戏,玩家控制一艘宇宙飞船,射击从右侧出现的敌人,同时避免与敌人相撞。

核心代码解析

1. 玩家控制与射击
A按钮事件 - 发射子弹
python
def on_a_pressed():

    global projectile

    projectile = sprites.create_projectile_from_sprite(img("""子弹图像"""),

      mySprite,# 从玩家飞船发射

      200,       # 速度200

      0)         # 方向0度(向右)
按下A键时,从玩家飞船创建一个子弹精灵
子弹使用ASCII艺术定义外观
子弹以200的速度向右水平发射

2. 碰撞检测系统
子弹与敌人的碰撞
python
def on_on_overlap(sprite, otherSprite):

    otherSprite.destroy(effects.fire, 500)# 敌人被摧毁,火焰效果

    info.change_score_by(1)# 得分+1
当子弹击中敌人时,敌人以火焰效果被摧毁
玩家得分增加1分
玩家与敌人的碰撞
python
def on_on_overlap2(sprite2, otherSprite2):

    mySprite2.destroy()# 敌人被摧毁

    scene.camera_shake(4, 500)# 屏幕震动

    info.change_life_by(-1)# 生命值-1
当玩家与敌人碰撞时,敌人被摧毁
产生屏幕震动效果
玩家生命值减少1点

3. 游戏初始化
玩家飞船创建
python
mySprite = sprites.create(img("""飞船图像"""), SpriteKind.player)

controller.move_sprite(mySprite, 200, 200)# 设置移动速度

mySprite.set_stay_in_screen(True)# 限制在屏幕内

info.set_life(5)# 设置初始生命值为5
创建玩家飞船,使用ASCII艺术定义外观
设置飞船移动速度为200x200
限制飞船不能离开屏幕
设置初始生命值为5

4. 敌人生成系统
python
def on_update_interval():

    global mySprite2

    mySprite2 = sprites.create(img("""敌人图像"""), SpriteKind.enemy)

    mySprite2.set_velocity(-100, 0)# 向左移动,速度100

    mySprite2.set_position(160, randint(5, 115))# 从右侧随机高度出现

    mySprite2.set_flag(SpriteFlag.AUTO_DESTROY, True)# 离开屏幕自动销毁

game.on_update_interval(1000, on_update_interval)# 每1000毫秒生成一个敌人
每1秒生成一个新的敌人
敌人使用ASCII艺术定义外观(类似小行星)
敌人以100的速度向左移动
敌人从屏幕右侧(160)随机高度(5-115)出现
设置敌人离开屏幕时自动销毁

游戏机制总结
控制方式:使用方向键移动飞船,A键发射子弹
得分系统:击中敌人得1分
生命系统:初始5条生命,碰撞敌人失去1条生命
视觉反馈:
敌人被击中时有火焰效果
玩家被击中时有屏幕震动效果
敌人生成:敌人持续从右侧随机位置生成

技术特点
精灵分类:使用SpriteKind.player和SpriteKind.enemy区分玩家和敌人
碰撞检测:通过sprites.on_overlap()处理不同精灵类型的碰撞
自动清理:使用SpriteFlag.AUTO_DESTROY自动销毁离开屏幕的敌人
随机化:敌人从随机高度出现,增加游戏变化性

驴友花雕 发表于 2025-9-5 17:56:44

【花雕动手做】基于Kitronik可编程开发板之太空飞机

图形编程参考实验程序


驴友花雕 发表于 2025-9-5 18:19:51

【花雕动手做】基于Kitronik可编程开发板之太空飞机

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



实验场景记录





页: [1]
查看完整版本: 【花雕动手做】基于Kitronik可编程开发板之太空飞机游戏