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



作为学习、练习与尝试,这里创建一个太空飞机的小游戏。
打开网页版: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)
太空飞机游戏代码解读
这是一个经典的太空射击游戏,玩家控制一艘宇宙飞船,射击从右侧出现的敌人,同时避免与敌人相撞。
核心代码解析
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自动销毁离开屏幕的敌人
随机化:敌人从随机高度出现,增加游戏变化性
图形编程参考实验程序

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

实验场景记录


评论