【花雕动手做】基于Kitronik游戏机开发板之夏季的雨
2025-09-261318
AI 快速预览详细
【花雕动手做】基于Kitronik游戏机开发板之夏季的雨是一个适合初学者的项目。Kitronik ARCADE开发板使用Microsoft MakeCode平台,具有图形化编程界面和即时模拟器,支持拖拽式编程,非常适合编程启蒙。此外,它还支持Python/JavaScript,便于进阶学习。通过这个项目,孩子可以轻松创建自己的游戏,培养逻辑思维和创造力。
![]() Kitronik ARCADE 使用 Microsoft MakeCode 平台,具有以下优势: 图形化编程界面:适合初学者,支持拖拽式编程。 即时模拟器:可以实时测试游戏效果。 硬件兼容性:可部署到 Kitronik ARCADE 设备,实现实体游戏体验。 支持 Python/JavaScript:便于进阶学习。 ![]() |






通过模拟器,调试与模拟运行
代码结构详解
1、精灵种类定义
python
[code]@namespace
class SpriteKind:
Water = SpriteKind.create()[/code]
创建一个新的精灵种类 Water,用于标记雨滴。
2、雨滴行为逻辑
python
[code]def on_sprite_kind_update_interval(sprite):
if sprite.y >= 62:
sprite.set_image(assets.image("Raindrop"))
sprite.vy = 0
def on_after():
sprites.destroy(sprite)
timer.after(100, on_after)[/code]
每个雨滴精灵每 1 毫秒检查一次位置:
如果雨滴落到 y ≥ 62(接近地面):
更换图像为“Raindrop”形态。
停止垂直速度(vy = 0)。
100 毫秒后销毁该雨滴。
python
[code]spriteutils.on_sprite_kind_update_interval(SpriteKind.Water, 1, on_sprite_kind_update_interval)[/code]
将上述逻辑绑定到所有 Water 类型精灵,每 1 毫秒执行一次。
3、场景设置
python
[code]scene.set_background_image(assets.image("Water"))
tiles.set_current_tilemap(tilemap("Sky"))
scroller.scroll_background_with_speed(-6, 0)[/code]
设置背景图为“Water”,营造雨天氛围。
使用 tilemap “Sky”作为地图结构。
背景缓慢向左滚动,模拟风或移动感。
4、雨滴生成机制
python
[code]def on_update_interval():
global Rain
Rain = sprites.create(img("8\n8"), SpriteKind.Water)
Rain.set_flag(SpriteFlag.RELATIVE_TO_CAMERA, True)
Rain.set_position(randint(0, 200), 0)
Rain.vy = 300[/code]
每 10 毫秒生成一个新的雨滴:
图像为两个像素点(简化雨滴形态)。
设置为相对于摄像机位置。
随机横坐标(0–200),纵坐标为顶部。
垂直速度为 300,快速下落。
python
[code]game.on_update_interval(10, on_update_interval)[/code]
每 10 毫秒调用一次雨滴生成函数,形成持续降雨效果。
打开网页版:https://arcade.makecode.com/,设置项目名称:夏季的雨
MicroPython实验代码
[code]@namespace
class SpriteKind:
Water = SpriteKind.create()
def on_sprite_kind_update_interval(sprite):
if sprite.y >= 62:
sprite.set_image(assets.image("""
Raindrop
"""))
sprite.vy = 0
def on_after():
sprites.destroy(sprite)
timer.after(100, on_after)
spriteutils.on_sprite_kind_update_interval(SpriteKind.Water, 1, on_sprite_kind_update_interval)
Rain: Sprite = None
scene.set_background_image(assets.image("""
Water
"""))
tiles.set_current_tilemap(tilemap("""
Sky
"""))
scroller.scroll_background_with_speed(-6, 0)
def on_update_interval():
global Rain
Rain = sprites.create(img("""
8
8
"""), SpriteKind.Water)
Rain.set_flag(SpriteFlag.RELATIVE_TO_CAMERA, True)
Rain.set_position(randint(0, 200), 0)
Rain.vy = 300
game.on_update_interval(10, on_update_interval)
[/code]