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







实验场景记录
代码逐段解析
1、玩家碰到樱桃(触发收集逻辑)
python
[code]def on_on_overlap(sprite, otherSprite):
global count, level
count += 1 # 收集数量+1
info.change_score_by(1) # 得分+1
otherSprite.destroy() # 销毁樱桃
otherSprite.start_effect(effects.smiles, 200) # 显示笑脸特效[/code]
2、判断是否通关
python
[code] if count > 10 + level:
level += 1 # 进入下一关
music.jump_up.play() # 播放通关音效
startLevel() # 重置关卡
else:
music.ba_ding.play() # 播放收集音效[/code]
3、初始化或进入新关卡
python
[code]def startLevel():
global count, food
scene.set_background_color(randint(3, 7)) # 随机背景色
count = 0 # 重置收集计数
index = 0[/code]
4、生成樱桃
python
[code] while index <= 10 + level:
food = sprites.create(sprites.food.small_cherries, SpriteKind.food)
food.set_position(randint(20, 140), randint(20, 100)) # 随机位置
index += 1[/code]
5、显示关卡提示 + 倒计时
python
[code] player2.say("Level " + str(level), 1000) # 显示当前关卡
info.start_countdown(10) # 每关限时10秒[/code]
6、游戏初始化
python
[code]food: Sprite = None
count = 0
player2: Sprite = None
level = 0
game.splash("Hurry!", "通关樱桃!") # 开始提示
level = 1
player2 = sprites.create(sprites.castle.princess_front0, SpriteKind.player) # 创建玩家角色
controller.move_sprite(player2, 70, 70) # 启用移动控制
startLevel() # 启动第一关[/code]
7、游戏特点总结
逐关挑战:每关需要收集的樱桃数量为 10 + 当前关卡数,难度逐渐提升。
时间限制:每关限时 10 秒,增加紧迫感。
视觉反馈:收集樱桃时有笑脸特效,通关时有音效提示。
动态背景:每关背景颜色随机变化,增强视觉体验。
打开网页版:https://arcade.makecode.com/,设置项目名称:通关樱桃
MicroPython实验参考代码
[code]def on_on_overlap(sprite, otherSprite):
global count, level
count += 1
info.change_score_by(1)
otherSprite.destroy()
otherSprite.start_effect(effects.smiles, 200)
if count > 10 + level:
level += 1
music.jump_up.play()
startLevel()
else:
music.ba_ding.play()
sprites.on_overlap(SpriteKind.player, SpriteKind.food, on_on_overlap)
def startLevel():
global count, food
scene.set_background_color(randint(3, 7))
count = 0
index = 0
while index <= 10 + level:
food = sprites.create(sprites.food.small_cherries, SpriteKind.food)
food.set_position(randint(20, 140), randint(20, 100))
index += 1
player2.say("Level " + str(level), 1000)
info.start_countdown(10)
food: Sprite = None
count = 0
player2: Sprite = None
level = 0
game.splash("Hurry!", "通关樱桃!")
level = 1
player2 = sprites.create(sprites.castle.princess_front0, SpriteKind.player)
controller.move_sprite(player2, 70, 70)
startLevel()[/code]