驴友花雕 发表于 2025-9-24 16:42:51

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳



Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。

它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。

凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。





驴友花雕 发表于 2025-9-24 16:45:22

【花雕动手做】基于 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)


驴友花雕 发表于 2025-9-24 16:50:40

【花雕动手做】基于 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游戏开发的基础概念!

驴友花雕 发表于 2025-9-24 16:55:23

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳

图形编程参考实验程序



通过模拟器,调试与模拟运行






实验场景记录







驴友花雕 发表于 2025-9-24 16:57:31

【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳


页: [1]
查看完整版本: 【花雕动手做】基于 Kitronik 游戏机开发板之兔子跳跳