【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳
Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。
它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。
凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。
【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳
作为学习、练习与尝试,这里创建一个兔子跳跳的小游戏。打开网页版:https://arcade.makecode.com/,设置项目名称:兔子跳跳
MicroPython实验代码
@namespace
class SpriteKind:
Obstacle = SpriteKind.create()
def on_on_overlap(sprite, otherSprite):
game.over(False, effects.melt)
sprites.on_overlap(SpriteKind.player, SpriteKind.Obstacle, on_on_overlap)
def on_a_pressed():
animation.stop_animation(animation.AnimationTypes.ALL, bunny)
if bunny.ay == 0:
bunny.set_image(img("""
. . . . . . . . . . . .
. . . 1 1 . 1 1 . . . .
. . . 1 3 . 1 3 . . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 f 1 1 f 1 . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 f f 1 1 . .
. . . 1 1 1 1 1 1 . . .
. 1 1 1 1 1 1 1 1 1 1 .
. 1 1 1 1 1 1 1 1 1 1 .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . . 1 1 . . . . .
. . . . . . 1 . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""))
bunny.vy = -160
bunny.ay = gravity
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
def on_on_destroyed(sprite2):
info.change_score_by(1)
sprites.on_destroyed(SpriteKind.Obstacle, on_on_destroyed)
def createCloud():
global cloud
cloud = sprites.create_projectile_from_side(clouds, -30, 0)
cloud.bottom = randint(30, 55)
cloud.z = -2
def setupFrames():
global birdFrames, bunnyFrames, obstacles, trees, grassImages, clouds
birdFrames = [img("""
. . . . . . . . . . . .
. . . . . 1 1 1 1 . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 . . . . .
. . . . 1 1 1 . . . . .
. . . . 1 1 1 . . . . .
. . 1 1 1 1 1 1 . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . 1 1 1 1 1 1 . .
. . . 1 1 1 1 1 . . . .
. . . 1 1 1 1 . . . . .
. . 1 1 1 1 1 1 . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . 1 1 1 1 . . . . .
. . 1 1 1 1 1 1 . . . .
. . . 1 1 1 1 1 1 1 1 .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . 1 1 1 1 1 1 . . . .
. . . 1 1 1 1 . . . . .
. . . 1 1 1 1 1 1 . . .
. . . . 1 1 1 1 1 1 1 .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . 1 1 1 1 1 1 . . . .
. . . 1 1 1 1 . . . . .
. . . 1 1 1 1 . . . . .
. . . . 1 1 1 1 1 . . .
. . . . . 1 1 1 1 1 . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . 1 1 1 1 1 1 . . . .
. . . 1 1 1 1 . . . . .
. . . 1 1 1 1 . . . . .
. . . . 1 1 1 1 1 . . .
. . . . . 1 1 1 1 1 . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . 1 1 1 1 1 1 . . . .
. . . 1 1 1 1 . . . . .
. . . 1 1 1 1 1 1 . . .
. . . . 1 1 1 1 1 1 1 .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . 1 1 1 1 . . . . .
. . 1 1 1 1 1 1 . . . .
. . . 1 1 1 1 1 1 1 1 .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . 1 1 1 1 1 1 . .
. . . 1 1 1 1 1 . . . .
. . . 1 1 1 1 . . . . .
. . 1 1 1 1 1 1 . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . 1 1 1 1 . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 . . . . .
. . . . 1 1 1 . . . . .
. . . . 1 1 1 . . . . .
. . 1 1 1 1 1 1 . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
""")]
animation.run_image_animation(bird, birdFrames, 40, True)
bunnyFrames = [img("""
. . . . . . . . . . . .
. . . . . . . d . . . .
. . . . . . . . . . . .
. . . . . . . . d . . .
. . . 1 1 . 1 1 . . . .
. . . 1 3 . 1 3 . . . .
. . . 1 3 . 1 3 . . . .
. . . 1 3 . 1 3 . . . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 f 1 1 f 1 . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 f f 1 1 . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. 1 1 1 1 1 1 1 1 1 1 .
. 1 1 . 1 1 1 1 . 1 1 .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 . . 1 . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . 1 1 . 1 1 . . . .
. . . 1 3 . 1 3 . . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 f 1 1 f 1 . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 f f 1 1 . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. 1 1 1 1 1 1 1 1 1 1 .
. 1 1 . 1 1 1 1 . 1 1 .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 . . 1 . . . .
. . . . . . . 1 . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . 1 1 . 1 1 . . . .
. . . 1 3 . 1 3 . . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 f 1 1 f 1 . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 f f 1 1 . .
. . . 1 1 1 1 1 1 . . .
. 1 1 1 1 1 1 1 1 1 1 .
. 1 1 1 1 1 1 1 1 1 1 .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . . 1 1 . . . . .
. . . . . . 1 . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . 1 1 . 1 1 . . . .
. . . 1 3 . 1 3 . . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 f 1 1 f 1 . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 f f 1 1 . .
. . . 1 1 1 1 1 1 . . .
. 1 1 1 1 1 1 1 1 1 1 .
. 1 1 1 1 1 1 1 1 1 1 .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . . 1 1 . . . . .
. . . . . 1 . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . 1 1 . 1 1 . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 f 1 1 f 1 . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 f f 1 1 . .
. . . 1 1 1 1 1 1 . . .
. 1 1 1 1 1 1 1 1 1 1 .
. 1 1 1 1 1 1 1 1 1 1 .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 . . 1 . . . .
. . . . 1 . . . . . . .
. . . . . . . . . . . .
"""),
img("""
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . 1 1 . 1 1 . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . . 1 3 . 1 3 . . .
. . . 1 1 1 1 1 1 . . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 f 1 1 f 1 . .
. . 1 1 1 1 1 1 1 1 . .
. . 1 1 1 1 f f 1 1 . .
. . . 1 1 1 1 1 1 . . .
. 1 1 1 1 1 1 1 1 1 1 .
. 1 1 1 1 1 1 1 1 1 1 .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 1 1 1 . . . .
. . . . 1 . . 1 . . . .
. . . . . . . . . . . .
""")]
obstacles = [img("""
......................
..........7...........
..........77..........
.........677..........
........66777.........
........66777.........
........667777........
.......6677777........
......66677777........
........66666.........
........6666..........
.......6666677........
......666777777.......
......6667777777......
......66777777777.....
..66666777777777777...
...666667777766666....
........666677........
........666777........
......667777777.......
...66677777777777.....
666677777777777777....
6667777777777777777776
...666666777777777776.
.....6666eeee77777666.
.........eeee.........
.........eeee.........
.........eeee.........
.......6.eeee..6......
...666...eeee.6.......
...6.6...eeee.........
......................
"""),
img("""
...................................
..........7........................
..........77.......................
.........677.......................
........66777......................
........66777......................
........667777.....................
.......6677777.....................
......66677777.....................
........66666......................
........6666.......................
.......6666677.....................
......666777777....................
......6667777777...................
......66777777777..................
..66666777777777777................
...666667777766666.................
........666677.....................
........666777...........eeeee.....
......667777777.........eebbbee....
...66677777777777......eebeeebee...
666677777777777777.....eebeebbee...
6667777777777777777776..eebbeee....
...666666777777777776..ebeeeebbe...
.....6666eeee77777666..eebbbbeee..e
.........eeee..........eeeeeeee..e.
.........eeee..........ebeebebe.e.e
.........eeee..........ebeeeebee...
.......6.eeee..6.......eeebeeee....
...666...eeee.6.......eebebebeee...
...6.6...eeee........eeeeeeeeeeee..
..........................ee.......
"""),
img("""
......................................
..........................7...........
..........................77..........
.........................677..........
........................66777.........
........................66777.........
........................667777........
.......................6677777........
......................66677777........
........................66666.........
........................6666..........
.......................6666677........
......................666777777.......
......................6667777777......
......................66777777777.....
..................66666777777777777...
...................666667777766666....
........................666677........
.....eeeee..............666777........
....eebbbee...........667777777.......
...eebeeebee.......66677777777777.....
...eebeebbee....666677777777777777....
....eebbeee.....6667777777777777777776
...ebeeeebbe.......666666777777777776.
...eebbbbeee..e......6666eeee77777666.
...eeeeeeee..e...........eeee.........
...ebeebebe.e.e..........eeee.........
...ebeeeebee.............eeee.........
...eeebeeee............6.eeee..6......
..eebebebeee.......666...eeee.6.......
.eeeeeeeeeeee......6.6...eeee.........
......ee..............................
"""),
img("""
....................................................
..........................7.........................
..........................77........................
.........................677........................
........................66777.......................
........................66777.......................
........................667777......................
.......................6677777......................
......................66677777......................
........................66666.......................
........................6666........................
.......................6666677......................
......................666777777.....................
......................6667777777....................
......................66777777777...................
..................66666777777777777.................
...................666667777766666..................
........................666677......................
.....eeeee..............666777............eeeee.....
....eebbbee...........667777777..........eebbbee....
...eebeeebee.......66677777777777.......eebeeebee...
...eebeebbee....666677777777777777......eebeebbee...
....eebbeee.....6667777777777777777776...eebbeee....
...ebeeeeb.e.......666666777777777776...ebeeeebbe...
...eebbbbeee..e......6666eeee77777666...eebbbbeee..e
...eeeeeeee..e...........eeee...........eeeeeeee..e.
...ebeebebe.e.e..........eeee...........ebeebebe.e.e
...ebeeeebee.............eeee...........ebeeeebee...
...eeebeeee............6.eeee..6........eeebeeee....
..eebebebeee.......666...eeee.6........eebebebeee...
.eeeeeeeeeeee......6.6...eeee.........eeeeeeeeeeee..
......ee...................................ee.......
"""),
img("""
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
.....eeeee.....
....eebbbee....
...eebeeebee...
...eebeebbee...
....eebbeee....
...ebeeeebbe...
...eebbbbeee..e
...eeeeeeee..e.
...ebeebebe.e.e
...ebeeeebee...
...eeebeeee....
..eebebebeee...
.eeeeeeeeeeee..
......ee.......
"""),
img("""
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.....eeeee.........eeeee.....
....eebbbee.......eebbbee....
...eebeeebee.....eebeeebee...
...eebeebbee.....eebeebbee...
....eebbeee.......eebbeee....
...ebeeeebbe.....ebeeeebbe...
...eebbbbeee..e..eebbbbeee..e
...eeeeeeee..e...eeeeeeee..e.
...ebeebebe.e.e..ebeebebe.e.e
...ebeeeebee.....ebeeeebee...
...eeebeeee......eeebeeee....
..eebebebeee....eebebebeee...
.eeeeeeeeeeee..eeeeeeeeeeee..
......ee............ee.......
"""),
img("""
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
...........................................
.....eeeee.........eeeee.........eeeee.....
....eebbbee.......eebbbee.......eebbbee....
...eebeeebee.....eebeeebee.....eebeeebee...
...eebeebbee.....eebeebbee.....eebeebbee...
....eebbeee.......eebbeee.......eebbeee....
...ebeeeebbe.....ebeeeebbe.....ebeeeebbe...
...eebbbbeee..e..eebbbbeee..e..eebbbbeee..e
...eeeeeeee..e...eeeeeeee..e...eeeeeeee..e.
...ebeebebe.e.e..ebeebebe.e.e..ebeebebe.e.e
...ebeeeebee.....ebeeeebee.....ebeeeebee...
...eeebeeee......eeebeeee......eeebeeee....
..eebebebeee....eebebebeee....eebebebeee...
.eeeeeeeeeeee..eeeeeeeeeeee..eeeeeeeeeeee..
......ee............ee............ee.......
""")]
animation.run_image_animation(bunny, bunnyFrames, 50, True)
trees = [img("""
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
...................b................
...................b................
...................b................
..................bbb...............
..................bb................
.................bbbb...............
................bbbbbb..............
..................bb................
.................bbbb...............
................bbbbbb..............
...............bbbbbbbb.............
..............bb..bbbbbb............
.................bbbb..bbb..........
..................bb................
.................bbbb...............
................bbbbbb..............
...............bbbbb.bb.............
..............bbbbbbbbbb............
............bbbb.bbbbbbb............
..........bbbbb..bbbbb.bbbb.........
................bbbbbb...bbb........
...............bbbbbbbb.............
..............bbbbbb.bb.............
...........bbbbbbbbbbbbb............
.........bbbbbb..bbbb.bbb...........
..........bbbbb..bbbb...............
................bbbbbbb.............
...............bbbbbbbbb............
.............bbbbbbbbb..............
...........bbbbbbbbbbbbbbbbb........
..........bbbbbbbbbbbbbbbbb.........
.........bbbb.bbbbbbbb..............
........bb....bbbbbbbbb.............
............bbbbbbbbbbbbb...........
........bbbbbbbbbbbbbbbbbbbb........
.......bbbbbbbbbbbbbbbbbbbbbbb......
......bbbbbbbb...bbbbbbbbb..........
..................bbb...............
..................bbb...............
..................bbb...............
"""),
img("""
...................b................
...................b................
...................b................
..................bbb...............
.................bbbbbb.............
..................bb................
...................bbbb.............
.................bbbbbbb............
...............bbb.b................
..................bbb...............
...............bbbbbbb..............
................bbbbbbbb............
..................bb.bbbb...........
..................bbb...............
.................bbbbbb.............
.............bbbbbbb.bbbb...........
............bbbbb.bbb...............
..................bbb...............
.................bbbbb..............
..............bbbbbbbb..............
.............bbbbbbbbbb.............
............bbb..bbbbbbbb...........
...........bbbb.bbbbbbbb.b..........
............b...bbbbbbbbb...........
...............bbbbbbbbbbb..........
..............bbbbbbb.bbbb..........
.............bbbbbbbbbbbbbbb........
...........bbbb.bbbbbbb.............
...............bbbbbb.bb............
.............bbbbbbbbbbbb...........
............bbbbbbbbbbbbbb..........
............bbbbbbbbbb..bbb.........
.........bbbbbbbbbbbbbb..bbbb.......
........bb...bbbbbbbbb..............
..............bbbbbbbbbbb...........
............bbbb.bbbbbbbb...........
........bbbb.b...bbbbbbb............
................bbbbb..bbbb.........
.............bbbbb.bbbbbbbb.........
.........bbbbbb..bbbb..bbbbb........
........bb.b....bbbbb.....bbb.......
................bbbbb...............
..................bbb...............
..................bbb...............
..................bbb...............
..................bbb...............
..................bbb...............
..................bbb...............
"""),
img("""
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
....................................
...................b................
...................b................
...................b................
...................b................
..................bb................
..................bbb...............
.................bbbb...............
...............bbbbb................
..................bb................
.................bbbb...............
.................bbbb...............
.................bbbbb..............
................bbbbbbb.............
..............bbbbbbbbbb............
............bbbb..bbbbbbb...........
.................bbbb...............
.................bbbb...............
................bbbbbb..............
................bbbbbb..............
...............bbbbbbbb.............
............bbbbbbbbbbbbb...........
........bbbbbbbbbbbbbbbbbbbb........
...........bbbbbbbbbbbbbbbb.........
................bbbbbbb.b...........
..............bbbbbbbbbbbbbbbb......
...........bbbbbbbbbbbbbbbbbb.......
........bbbbbbbbbbbbbbbbbbb.........
..........bbbbb...bbbb..............
..................bbb...............
..................b.b...............
..................b.b...............
..................bbb...............
..................bbb...............
""")]
grassImages = [img("""
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . b . . .
. . . . b . . .
. . . b b . . .
. . . b b . . .
"""),
img("""
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . b . . . .
. . . b . . . .
. . . b b . b .
. . . b b . b .
"""),
img("""
. . . . . . . .
. . . . . . . .
b . . . . . . .
b . . b . . . .
b . . b b . . .
b . b b b . . .
b . b b b . b .
b b b b b . b .
"""),
img("""
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . b
. . . b . . . b
. . . b . . . b
. . . b b . b b
. . . b b . b b
"""),
img("""
. . . . . . . .
. . . . . . . .
. . . b . . . .
. . . b . . . .
. . b b . . . .
. . b b b . . .
. . b b b . . .
. . b b b . . .
"""),
img("""
. . . . . . . .
. . . . . . . .
. . . . . . . .
. b . . . . . .
. b . . . . . .
. b b . . . b .
. b b . . . b .
. b b . . . b .
""")]
clouds = [img("""
............................11.....................
.........................1111111...................
........................111111111111...............
.......................11111111111111..............
......................1111111111111111.............
.....................11111111111111111.............
..................111111111111111111111............
...............1111111111111111111111111...........
..........1111111111111111111111111111111..........
.........111111111111111111111111111111111.........
........111111111111111111111111111111111111.......
.......111111111111111111111111111111111111111.....
.......1111111111111111111111111111111111111111....
.......11111111111111111111111111111111111111111...
.......111111111111111111111111111111111111111111..
......1111111111111111111111111111111111111111111..
....111111111111111111111111111111111111111111111..
...11111111111111111111111111111111111111111111111.
..111111111111111111111111111111111111111111111111.
.11111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111.
.....1111111111111111111111111111111111111111......
"""),
img("""
.........................11111................
........................1111111...............
......................1111111111..............
..................111111111111111.............
...............111111111111111111.............
..............1111111111111111111111111.......
.............111111111111111111111111111......
.............111111111111111111111111111......
.............1111111111111111111111111111.....
............11111111111111111111111111111.....
............111111111111111111111111111111....
............111111111111111111111111111111....
...........11111111111111111111111111111111...
......11111111111111111111111111111111111111..
.....1111111111111111111111111111111111111111.
....11111111111111111111111111111111111111111.
...1111111111111111111111111111111111111111111
...1111111111111111111111111111111111111111111
...1111111111111111111111111111111111111111111
...1111111111111111111111111111111111111111111
..11111111111111111111111111111111111111111111
.111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111.
11111111111111111..................111111111..
"""),
img("""
........11111111.................
.......1111111111................
....11111111111111...............
...1111111111111111..............
..11111111111111111111111........
..111111111111111111111111.......
.11111111111111111111111111......
.111111111111111111111111111.....
1111111111111111111111111111.....
111111111111111111111111111111...
.111111111111111111111111111111..
.1111111111111111111111111111111.
..1111111111111111111111111111111
.....1111111111111111111111111111
......111111111111111111111111...
.................................
"""),
img("""
...................1111................................................
..................111111...............................................
.................11111111111111........................................
................1111111111111111.......................................
..............1111111111111111111......................................
............1111111111111111111111.....................................
...........11111111111111111111111.....................................
..........111111111111111111111111.....................................
..........1111111111111111111111111......11111.........................
.........11111111111111111111111111...111111111........................
.........111111111111111111111111111111111111111.......................
.......111111111111111111111111111111111111111111......................
......1111111111111111111111111111111111111111111111...................
....11111111111111111111111111111111111111111111111111.................
...1111111111111111111111111111111111111111111111111111................
...11111111111111111111111111111111111111111111111111111...............
..1111111111111111111111111111111111111111111111111111111..............
..1111111111111111111111111111111111111111111111111111111..............
..11111111111111111111111111111111111111111111111111111111.............
..111111111111111111111111111111111111111111111111111111111............
..11111111111111111111111111111111111111111111111111111111111..........
..1111111111111111111111111111111111111111111111111111111111111........
..111111111111111111111111111111111111111111111111111111111111111111...
.11111111111111111111111111111111111111111111111111111111111111111111..
1111111111111111111111111111111111111111111111111111111111111111111111.
1111111111111111111111111111111111111111111111111111111111111111111111.
11111111111111111111111111111111111111111111111111111111111111111111111
.1111111111111111111111111111111111111111111111111111111111111111111111
..11111111111111111111111111111111111111111111111111111111111111111111.
...............1111111111111111111111111111111..........11111111.......
"""),
img("""
........................1111...........
.................1111..111111..........
...............111111111111111.........
.............111111111111111111........
............11111111111111111111.......
.........111111111111111111111111......
........1111111111111111111111111......
.......1111111111111111111111111111....
......111111111111111111111111111111...
.....11111111111111111111111111111111..
.....111111111111111111111111111111111.
....1111111111111111111111111111111111.
....11111111111111111111111111111111111
....11111111111111111111111111111111111
..1111111111111111111111111111111111111
.1111111111111111111111111111111111111.
1111111111111111111111111111111111111..
111111111111111111.....................
""")]
def createTree():
global tree
tree = sprites.create_projectile_from_side(trees, -50, 0)
tree.bottom = 100
tree.z = -1
grass: Sprite = None
projectile: Sprite = None
obstacleImage: Image = None
tree: Sprite = None
grassImages: List = []
trees: List = []
obstacles: List = []
bunnyFrames: List = []
birdFrames: List = []
clouds: List = []
cloud: Sprite = None
bird: Sprite = None
gravity = 0
bunny: Sprite = None
scene.set_background_color(13)
bunny = sprites.create(img("""
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
"""),
SpriteKind.player)
gravity = 400
bunny.ay = gravity
bunny.x = 20
bird = sprites.create(img("""
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
"""),
SpriteKind.projectile)
bird.set_position(160, 20)
bird.set_velocity(-120, 0)
setupFrames()
def on_on_update():
if bunny.bottom > 105:
bunny.bottom = 105
bunny.vy = 0
bunny.ay = 0
animation.run_image_animation(bunny, bunnyFrames, 50, True)
game.on_update(on_on_update)
def on_on_update2():
if bird.x < 0:
bird.set_position(randint(160, 240), randint(20, 60))
game.on_update(on_on_update2)
def on_update_interval():
global obstacleImage, projectile
obstacleImage = obstacles
projectile = sprites.create_projectile_from_side(obstacleImage, -100, 0)
projectile.bottom = 105
projectile.set_kind(SpriteKind.Obstacle)
game.on_update_interval(2000, on_update_interval)
def on_update_interval2():
if Math.percent_chance(40):
createCloud()
game.on_update_interval(1000, on_update_interval2)
def on_forever():
if Math.percent_chance(60):
createTree()
if Math.percent_chance(50):
pause(randint(150, 300))
createTree()
pause(1500)
forever(on_forever)
def on_update_interval3():
global grass
if Math.percent_chance(40):
grass = sprites.create_projectile_from_side(grassImages, -50, 0)
grass.bottom = 100
grass.z = -1
game.on_update_interval(200, on_update_interval3)
【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳
这是一个基于ARCADE MakeCode的兔子跳跃游戏(类似Chrome小恐龙游戏)代码。游戏概述
这是一个无限跑酷类游戏,玩家控制一只兔子跳跃躲避障碍物,随着时间推移得分不断增加。
代码结构分析
1. 精灵种类定义
python
class SpriteKind:
Obstacle = SpriteKind.create()# 障碍物
2. 核心游戏机制
跳跃系统
python
def on_a_pressed():
if bunny.ay == 0:# 只有在地面上才能跳跃
bunny.set_image(跳跃姿态图片)
bunny.vy = -160# 向上的速度
bunny.ay = gravity# 重新启用重力
按A键跳跃
只有在地面上才能跳跃(通过ay == 0检测)
设置向上的初速度,然后让重力作用
物理系统
python
gravity = 400# 重力加速度
bunny.ay = gravity# 应用到兔子精灵
3. 动画系统
游戏包含丰富的动画资源:
鸟类动画 (birdFrames)
10帧翅膀扇动动画
在屏幕顶部飞行,增加游戏生动性
兔子动画 (bunnyFrames)
6帧奔跑动画循环
包含耳朵摆动、身体起伏的细节
障碍物图像 (obstacles)
7种不同的仙人掌障碍物
有些带有装饰性的小云朵和草丛
环境元素
树木 (trees): 3种不同形状的树
草丛 (grassImages): 6种地面草丛
云朵 (clouds): 5种不同形状的云
4. 游戏对象生成系统
障碍物生成
python
def on_update_interval():
obstacleImage = obstacles[随机选择]
projectile = sprites.create_projectile_from_side(obstacleImage, -100, 0)
projectile.bottom = 105# 固定在地面高度
projectile.set_kind(SpriteKind.Obstacle)
game.on_update_interval(2000, on_update_interval)# 每2秒生成一个
环境装饰生成
云朵: 40%概率每秒生成,随机高度
树木: 60%概率每1.5秒生成,可能连续生成两棵
草丛: 40%概率每0.2秒生成,增加地面细节
5. 碰撞检测系统
python
def on_on_overlap(sprite, otherSprite):
game.over(False, effects.melt)# 游戏结束,融化效果
sprites.on_overlap(SpriteKind.player, SpriteKind.Obstacle, on_on_overlap)
6. 得分系统
python
def on_on_destroyed(sprite2):
info.change_score_by(1)# 障碍物离开屏幕得分
sprites.on_destroyed(SpriteKind.Obstacle, on_on_destroyed)
游戏特性
控制方式:
A键: 跳跃(只有在地面时有效)
游戏机制:
自动前进: 场景向左滚动,兔子相对静止
障碍躲避: 跳跃避开仙人掌障碍物
无限跑酷: 游戏持续进行直到碰撞
得分系统: 成功躲避的障碍物计分
视觉层次:
通过z坐标控制渲染顺序:
云朵 (z = -2): 最底层背景
树木 (z = -1): 中间层
草丛 (z = -1): 中间层
兔子 (默认): 主角层
障碍物 (默认): 前景层
技术亮点
1. 动画状态管理
python
animation.stop_animation(animation.AnimationTypes.ALL, bunny)
跳跃时停止奔跑动画,显示跳跃静态图
2. 物理模拟
真实的重力加速度模拟
地面碰撞检测 (bunny.bottom > 105)
落地后重置物理状态
3. 随机化系统
障碍物类型随机选择
环境元素生成概率控制
鸟类重生位置随机
4. 性能优化
使用projectile_from_side自动清理屏幕外对象
通过on_destroyed事件高效计分
分层渲染减少重绘
艺术设计特色
像素艺术风格:
兔子: 可爱的粉色兔子,耳朵动态效果
鸟类: 简单的像素鸟动画
仙人掌: 多种形态的绿色仙人掌
环境: 简约但富有层次的背景
颜色搭配:
背景色: 淡蓝色 (color 13)
主体色: 粉色兔子 vs 绿色障碍物
装饰色: 白色云朵、棕色树木
这个游戏展示了优秀的无限跑酷游戏设计,代码结构清晰,视觉效果丰富,游戏机制简单但具有挑战性。非常适合学习MakeCode游戏开发的基础概念!
【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳
图形编程参考实验程序通过模拟器,调试与模拟运行
实验场景记录
【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳
页:
[1]