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







实验场景记录
一、核心功能概览
二、代码逐段解析
1、初始化变量
python
[code]projectile: Sprite = None[/code]
定义一个全局变量 projectile,用于临时存储每次生成的星星精灵。
2、每帧更新逻辑
python
[code]def on_on_update():
global projectile
if Math.percent_chance(25):
...[/code]
game.on_update(on_on_update)
每帧调用一次 on_on_update(),即每 20 毫秒左右执行一次。
使用 Math.percent_chance(25) 控制星星生成概率,约每 4 帧生成一颗星星。
3、创建星星精灵
python
[code]projectile = sprites.create_projectile_from_side(img("""..."""), 0, randint(20, 30))[/code]
创建一个星星图像的精灵,图像为一个小点(1)。
水平速度为 0,垂直速度为 20~30,表示从顶部垂直飞下。
4、设置位置与属性
python
[code]projectile.set_position(randint(0, scene.screen_width()), 0)
projectile.set_flag(SpriteFlag.GHOST, True)[/code]
将星星随机放置在屏幕顶部的任意 X 坐标。
设置为 GHOST,表示该精灵不会与其他精灵发生碰撞,纯粹用于视觉效果。
三、视觉效果与设计意图
模拟星星从天而降,形成“飞驰的星空”背景。
可用于游戏开场动画、太空飞船背景、或高速移动场景。
星星速度随机,增强动态感与真实感。
打开网页版:https://arcade.makecode.com/,设置项目名称:飞驰的星空
MicroPython实验参考代码
[code]projectile: Sprite = None
def on_on_update():
global projectile
if Math.percent_chance(25):
projectile = sprites.create_projectile_from_side(img("""
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
"""),
0,
randint(20, 30))
projectile.set_position(randint(0, scene.screen_width()), 0)
projectile.set_flag(SpriteFlag.GHOST, True)
game.on_update(on_on_update)[/code]