【花雕动手做】基于Kitronik可编程开发板之草莓公主游戏
Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。
它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。
凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。
【花雕动手做】基于Kitronik可编程开发板之草莓公主游戏
作为学习、练习与尝试,这里创建一个草莓公主的小游戏。打开网页版:https://arcade.makecode.com/,设置项目名称:草莓公主
MicroPython实验代码
@namespace
class SpriteKind:
Taco = SpriteKind.create()
def on_on_overlap(sprite, otherSprite):
info.change_score_by(10)
otherSprite.destroy()
sprites.on_overlap(SpriteKind.player, SpriteKind.Taco, on_on_overlap)
# Eating a strawberry or a cherry gives 1 point
#
# Eating taco gives 10 points
#
# If you try to eat the death pill you will lose a life, but gain 15 points.
#
# Princess, you have 60 seconds and 3 life to finish the game.
def randomAssets():
global strawberry, cherry, taco, deathpill
strawberry = sprites.create(img("""
. . . . . . . 6 . . . . . . . .
. . . . . . 8 6 6 . . . 6 8 . .
. . . e e e 8 8 6 6 . 6 7 8 . .
. . e 2 2 2 2 e 8 6 6 7 6 . . .
. e 2 2 4 4 2 7 7 7 7 7 8 6 . .
. e 2 4 4 2 6 7 7 7 6 7 6 8 8 .
e 2 4 5 2 2 6 7 7 6 2 7 7 6 . .
e 2 4 4 2 2 6 7 6 2 2 6 7 7 6 .
e 2 4 2 2 2 6 6 2 2 2 e 7 7 6 .
e 2 4 2 2 4 2 2 2 4 2 2 e 7 6 .
e 2 4 2 2 2 2 2 2 2 2 2 e c 6 .
e 2 2 2 2 2 2 2 4 e 2 e e c . .
e e 2 e 2 2 4 2 2 e e e c . . .
e e e e 2 e 2 2 e e e c . . . .
e e e 2 e e c e c c c . . . . .
. c c c c c c c . . . . . . . .
"""),
SpriteKind.food)
strawberry.x = randint(0, scene.screen_width())
strawberry.y = randint(0, scene.screen_height())
cherry = sprites.create(img("""
. . . . . . . . . . . 6 6 6 6 6
. . . . . . . . . 6 6 7 7 7 7 8
. . . . . . 8 8 8 7 7 8 8 6 8 8
. . e e e e c 6 6 8 8 . 8 7 8 .
. e 2 5 4 2 e c 8 . . . 6 7 8 .
e 2 4 2 2 2 2 2 c . . . 6 7 8 .
e 2 2 2 2 2 2 2 c . . . 8 6 8 .
e 2 e e 2 2 2 2 e e e e c 6 8 .
c 2 e e 2 2 2 2 e 2 5 4 2 c 8 .
. c 2 e e e 2 e 2 4 2 2 2 2 c .
. . c 2 2 2 e e 2 2 2 2 2 2 2 e
. . . e c c e c 2 2 2 2 2 2 2 e
. . . . . . . c 2 e e 2 2 e 2 c
. . . . . . . c e e e e e e 2 c
. . . . . . . . c e 2 2 2 2 c .
. . . . . . . . . c c c c c . .
"""),
SpriteKind.food)
cherry.x = randint(0, scene.screen_width())
cherry.y = randint(0, scene.screen_height())
if Math.percent_chance(20):
taco = sprites.create(img("""
. . . . . . . e e e e . . . . .
. . . . . e e 4 5 5 5 e e . . .
. . . . e 4 5 6 2 2 7 6 6 e . .
. . . e 5 6 6 7 2 2 6 4 4 4 e .
. . e 5 2 2 7 6 6 4 5 5 5 5 4 .
. e 5 6 2 2 8 8 5 5 5 5 5 4 5 4
. e 5 6 7 7 8 5 4 5 4 5 5 5 5 4
e 4 5 8 6 6 5 5 5 5 5 5 4 5 5 4
e 5 c e 8 5 5 5 4 5 5 5 5 5 5 4
e 5 c c e 5 4 5 5 5 4 5 5 5 e .
e 5 c c 5 5 5 5 5 5 5 5 4 e . .
e 5 e c 5 4 5 4 5 5 5 e e . . .
e 5 e e 5 5 5 5 5 4 e . . . . .
4 5 4 e 5 5 5 5 e e . . . . . .
. 4 5 4 5 5 4 e . . . . . . . .
. . 4 4 e e e . . . . . . . . .
"""),
SpriteKind.Taco)
taco.x = randint(0, scene.screen_width())
taco.y = randint(0, scene.screen_height())
else:
deathpill = sprites.create(img("""
........................
........................
........................
........................
........................
..........ffff..........
........ff1111ff........
.......fb111111bf.......
.......f11111111f.......
......fd11111111df......
....7.fd11111111df......
...7..fd11111111df......
...7..fd11111111df......
...7..fddd1111dddff.....
...77.fbdbfddfbdbfcf....
...777fcdcf11fcdcfbf....
....77fffbdb1bdffcf.....
....fcb1bcffffff........
....f1c1c1ffffff........
....fdfdfdfffff.........
.....f.f.f..............
........................
........................
........................
"""),
SpriteKind.enemy)
deathpill.x = randint(0, scene.screen_width())
deathpill.y = randint(0, scene.screen_height())
def on_on_overlap2(sprite2, otherSprite2):
info.change_score_by(1)
otherSprite2.destroy()
sprites.on_overlap(SpriteKind.player, SpriteKind.food, on_on_overlap2)
def on_on_overlap3(sprite3, otherSprite3):
info.change_life_by(-1)
info.change_score_by(15)
otherSprite3.destroy()
sprites.on_overlap(SpriteKind.player, SpriteKind.enemy, on_on_overlap3)
deathpill: Sprite = None
taco: Sprite = None
cherry: Sprite = None
strawberry: Sprite = None
info.set_life(3)
info.start_countdown(60)
princess = sprites.create(img("""
. . . . . . 5 . 5 . . . . . . .
. . . . . f 5 5 5 f f . . . . .
. . . . f 1 5 2 5 1 6 f . . . .
. . . f 1 6 6 6 6 6 1 6 f . . .
. . . f 6 6 f f f f 6 1 f . . .
. . . f 6 f f d d f f 6 f . . .
. . f 6 f d f d d f d f 6 f . .
. . f 6 f d 3 d d 3 d f 6 f . .
. . f 6 6 f d d d d f 6 6 f . .
. f 6 6 f 3 f f f f 3 f 6 6 f .
. . f f d 3 5 3 3 5 3 d f f . .
. . f d d f 3 5 5 3 f d d f . .
. . . f f 3 3 3 3 3 3 f f . . .
. . . f 3 3 5 3 3 5 3 3 f . . .
. . . f f f f f f f f f f . . .
. . . . . f f . . f f . . . . .
"""),
SpriteKind.player)
princess.set_stay_in_screen(True)
controller.move_sprite(princess)
scene.set_background_color(11)
def on_update_interval():
randomAssets()
game.on_update_interval(2000, on_update_interval)
【花雕动手做】基于Kitronik可编程开发板之草莓公主游戏
这段 Arcade MakeCode 的《草莓公主游戏》代码是一个轻松有趣的收集类游戏,玩家控制“公主”在屏幕中收集食物并避开危险物品。游戏目标,在 60 秒内,玩家控制草莓公主收集食物得分,同时避免失去生命。最终得分取决于收集的物品数量与种类。
核心机制解析
1、精灵种类定义
python
@namespace
class SpriteKind:
Taco = SpriteKind.create()
扩展 SpriteKind,添加自定义类型 Taco,用于识别特殊食物。
2、食物与道具生成逻辑
python
def randomAssets():
...
game.on_update_interval(2000, on_update_interval)
每 2 秒自动生成一组随机物品,包括:
草莓(strawberry):得分 +1
樱桃(cherry):得分 +1
塔可(taco):20% 概率生成,得分 +10
死亡药丸(deathpill):80% 概率生成,得分 +15,但失去 1 条生命
每个物品随机出现在屏幕任意位置。
3、玩家控制与角色设置
python
princess = sprites.create(img("""..."""), SpriteKind.player)
controller.move_sprite(princess)
princess.set_stay_in_screen(True)
创建主角“草莓公主”精灵。
启用方向键控制移动。
限制角色不离开屏幕。
4、游戏时间与生命设定
python
info.set_life(3)
info.start_countdown(60)
玩家初始拥有 3 条生命。
游戏限时 60 秒。
5、碰撞事件处理
收集塔可
python
sprites.on_overlap(SpriteKind.player, SpriteKind.Taco, on_on_overlap)
得分 +10,销毁塔可。
收集草莓或樱桃
python
sprites.on_overlap(SpriteKind.player, SpriteKind.food, on_on_overlap2)
得分 +1,销毁食物。
吃到死亡药丸
python
sprites.on_overlap(SpriteKind.player, SpriteKind.enemy, on_on_overlap3)
得分 +15,但生命 -1,销毁药丸。
【花雕动手做】基于Kitronik可编程开发板之草莓公主游戏
图形编程参考实验程序通过模拟器,调试与模拟运行
实验场景记录
【花雕动手做】基于Kitronik可编程开发板之草莓公主游戏
页:
[1]