驴友花雕 发表于 2025-9-24 08:56:44

【花雕动手做】基于Kitronik可编程开发板之猫吃金币游戏



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

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

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



驴友花雕 发表于 2025-9-24 08:58:45

【花雕动手做】基于Kitronik可编程开发板之猫吃金币游戏

作为学习、练习与尝试,这里创建一个猫吃金币的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:猫吃金币

MicroPython实验代码

@namespace
class SpriteKind:
    Coin = SpriteKind.create()
    Flower = SpriteKind.create()
    Fireball = SpriteKind.create()

def on_on_overlap(sprite, otherSprite):
    info.change_score_by(1)
    otherSprite.destroy()
sprites.on_overlap(SpriteKind.player, SpriteKind.Coin, on_on_overlap)

def on_a_pressed():
    if Hops_and_Paw.vy == 0:
      Hops_and_Paw.vy = -150
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)

def on_overlap_tile(sprite2, location):
    game.over(False, effects.melt)
scene.on_overlap_tile(SpriteKind.player,
    assets.tile("""
      tile3
      """),
    on_overlap_tile)

def on_overlap_tile2(sprite3, location2):
    global current_level
    current_level += 1
    startLevel()
scene.on_overlap_tile(SpriteKind.player,
    assets.tile("""
      tile2
      """),
    on_overlap_tile2)

def on_on_overlap2(sprite4, otherSprite2):
    global bee
    otherSprite2.destroy()
    bee = sprites.create(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            """),
      SpriteKind.enemy)
    animation.run_image_animation(bee,
      [img("""
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . f f f f f f f . . . . .
                . . . f 1 1 1 f 1 1 1 f . . . .
                . . . f 1 1 1 f 1 1 1 f . . . .
                . . . . . 1 1 1 1 1 . . . . . .
                . . . . f f f f f f f . . . . .
                . . . f 5 5 5 f 5 5 5 f . . . .
                . . . f f 5 5 f 5 5 f f . . . .
                . . . f 5 5 5 f 5 5 5 f . . . .
                . . . . f f f f f f f . . . . .
                """),
            img("""
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . f f f f f f f . . . . .
                . . . f 5 5 5 f 5 5 5 f . . . .
                . . . f f 5 5 f 5 5 f f . . . .
                . . . f 5 5 5 f 5 5 5 f . . . .
                . . . . f f f f f f f . . . . .
                """)],
      100,
      True)
    bee.set_position(Hops_and_Paw.x + 80, Hops_and_Paw.y - 80)
    bee.follow(Hops_and_Paw, 50)
sprites.on_overlap(SpriteKind.player, SpriteKind.Flower, on_on_overlap2)

def on_on_overlap3(sprite5, otherSprite3):
    info.change_life_by(-2)
    otherSprite3.destroy()
sprites.on_overlap(SpriteKind.player, SpriteKind.Fireball, on_on_overlap3)

def startLevel():
    global flower, fireball
    if current_level == 0:
      tiles.set_tilemap(tilemap("""
            level
            """))
    elif current_level == 1:
      tiles.set_tilemap(tilemap("""
            level_0
            """))
    elif current_level == 2:
      tiles.set_tilemap(tilemap("""
            level_1
            """))
    else:
      game.over(True)
    tiles.place_on_random_tile(Hops_and_Paw, assets.tile("""
      tile6
      """))
    for value in tiles.get_tiles_by_type(assets.tile("""
      tile6
      """)):
      tiles.set_tile_at(value, assets.tile("""
            tile0
            """))
    scene.camera_follow_sprite(Hops_and_Paw)
    info.set_life(5)
    for value2 in sprites.all_of_kind(SpriteKind.enemy):
      value2.destroy()
    for value3 in sprites.all_of_kind(SpriteKind.Coin):
      value3.destroy()
    for value4 in sprites.all_of_kind(SpriteKind.Flower):
      value4.destroy()
    for value5 in tiles.get_tiles_by_type(assets.tile("""
      tile4
      """)):
      flower = sprites.create(img("""
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . f f f f f f f . . . .
                . . . . f 5 5 5 5 5 5 5 f . . .
                . . . f 5 5 4 4 4 4 5 5 5 f . .
                . . f 5 5 5 5 5 5 5 5 5 5 5 f .
                . . f 5 4 5 5 5 5 5 5 5 5 5 f .
                . . f 5 4 5 5 5 5 5 5 5 5 5 f .
                . . f 5 4 5 5 5 5 5 5 5 5 5 f .
                . . f 5 4 5 5 5 5 5 5 5 5 5 f .
                . . f 5 4 5 5 5 5 5 5 5 5 5 f .
                . . f 5 4 5 5 5 5 5 5 5 5 5 f .
                . . . f 5 5 4 4 5 5 5 5 5 f . .
                . . . . f 5 5 5 5 5 5 5 f . . .
                . . . . . f f f f f f f . . . .
                . . . . . . . . . . . . . . . .
                """),
            SpriteKind.Coin)
      animation.run_image_animation(flower,
            [img("""
                  . . . . . . . . . . . . . . . .
                  . . . . f f f f f f f . . . . .
                  . . . f 5 5 5 5 5 5 5 f . . . .
                  . . f 5 4 4 4 4 4 5 5 5 f . . .
                  . f 5 4 5 5 5 5 5 5 5 5 5 f . .
                  . f 5 4 5 5 5 5 5 5 5 5 5 f . .
                  . f 5 4 5 5 5 5 5 5 5 5 5 f . .
                  . f 5 4 5 5 5 5 5 5 5 5 5 f . .
                  . f 5 4 5 5 5 5 5 5 5 5 5 f . .
                  . f 5 4 5 5 5 5 5 5 5 5 5 f . .
                  . f 5 5 5 5 5 5 5 5 5 5 5 f . .
                  . . f 5 5 4 4 4 5 5 5 5 f . . .
                  . . . f 5 5 5 5 5 5 5 f . . . .
                  . . . . f f f f f f f . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . f f f f f . . . . . .
                  . . . . f 5 5 5 5 5 f . . . . .
                  . . . f 5 4 4 4 4 5 5 f . . . .
                  . . f 5 4 5 5 5 5 5 5 5 f . . .
                  . . f 5 4 5 5 5 5 5 5 5 f . . .
                  . . f 5 4 5 5 5 5 5 5 5 f . . .
                  . . f 5 4 5 5 5 5 5 5 5 f . . .
                  . . f 5 4 5 5 5 5 5 5 5 f . . .
                  . . f 5 4 5 5 5 5 5 5 5 f . . .
                  . . f 5 5 5 5 5 5 5 5 5 f . . .
                  . . . f 5 5 4 4 5 5 5 f . . . .
                  . . . . f 5 5 5 5 5 f . . . . .
                  . . . . . f f f f f . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . . f f f . . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . f 5 4 4 5 5 f . . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 5 5 5 5 5 5 f . . . .
                  . . . . f 5 5 4 5 5 f . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . . f f f . . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . f 5 4 5 f . . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 5 5 5 5 f . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 4 f . . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 4 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 4 f . . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . . . f . . . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . f 5 4 5 f . . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 4 5 5 5 f . . . . .
                  . . . . f 5 5 5 5 5 f . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . . f 5 f . . . . . . .
                  . . . . . . . f f . . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """),
                img("""
                  . . . . . . . . . . . . . . . .
                  . . . . . . f f f . . . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . f 5 4 4 5 5 f . . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 4 5 5 5 5 5 f . . . .
                  . . . f 5 5 5 5 5 5 5 f . . . .
                  . . . . f 5 5 4 5 5 f . . . . .
                  . . . . . f 5 5 5 f . . . . . .
                  . . . . . . f f f . . . . . . .
                  . . . . . . . . . . . . . . . .
                  . . . . . . . . . . . . . . . .
                  """)],
            100,
            True)
      tiles.place_on_tile(flower, value5)
      tiles.set_tile_at(value5, assets.tile("""
            tile0
            """))
    for value6 in tiles.get_tiles_by_type(assets.tile("""
      tile5
      """)):
      flower = sprites.create(img("""
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . 3 a . . a 3 . . . . . .
                . . . . a 3 2 2 3 a . . . . . .
                . . 7 7 . a 3 3 a . . . . . . .
                . . 7 7 7 . c c . 7 7 . . . . .
                . . . 8 7 7 7 . 7 7 7 . . . . .
                . . . 8 8 7 7 7 7 8 . . . . . .
                . . . . . 8 7 7 8 . . . . . . .
                . . . . . . 7 8 . . . . . . . .
                """),
            SpriteKind.Flower)
      tiles.place_on_tile(flower, value6)
      tiles.set_tile_at(value6, assets.tile("""
            tile0
            """))
    for value7 in tiles.get_tiles_by_type(assets.tile("""
      tile11
      """)):
      fireball = sprites.create(img("""
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . . . . . . . . . .
                . . . . . . . 5 . . . . . . . .
                . . . . 5 5 2 5 5 4 5 5 . . . .
                . . . . . 4 4 4 4 2 4 . . . . .
                . . . 5 4 4 2 2 2 2 4 5 . . . .
                . . . 5 4 . 2 8 2 8 4 2 . . . .
                . . . 5 5 . 2 8 8 2 4 5 . . . .
                . . . 2 5 2 2 8 2 4 4 5 . . . .
                . . . . 5 4 2 2 2 4 5 . . . . .
                . . . . . . 4 . 4 4 5 . . . . .
                . . . 5 . 5 5 5 4 5 5 . . . . .
                . . . . . . . 2 5 5 . . . . . .
                . . . . . . . . . . . . . 5 . .
                . . . . . . . . . . . . . . . .
                """),
            SpriteKind.Fireball)
      tiles.place_on_tile(fireball, value7)
      tiles.set_tile_at(value7, assets.tile("""
            tile0
            """))
      animation.run_movement_animation(fireball, "c 0 -100 0 100 0 0", 2000, True)
      fireball.start_effect(effects.fire)

def on_on_overlap4(sprite6, otherSprite4):
    otherSprite4.destroy()
    if Hops_and_Paw.y < otherSprite4.y:
      info.change_score_by(3)
    else:
      info.change_life_by(-1)
sprites.on_overlap(SpriteKind.player, SpriteKind.enemy, on_on_overlap4)

fireball: Sprite = None
flower: Sprite = None
bee: Sprite = None
Hops_and_Paw: Sprite = None
current_level = 0
scene.set_background_color(9)
scene.set_background_image(img("""
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999111119999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999911111111199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999991111111111111999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999911111111111111199999999111111199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999111111111111111119999911111111119999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999111111111111111111999911111111111999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999991111111111111111111199111111111111199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999911199991111111111111111111111111111111111119999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999111119911111111111111111111111111111111111119999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999111111911111111111111111111111111111111111111999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999991111111111111111111111111111111111111111111111999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999991111111111111111111111111111111111111111111111999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999991111111111111111111111111111111111111111111111999999999999999999999999999999991111199999999999999999999999999999999999999999991111999999999999999
    9999999999999911111111111111111111111111111111111111111111111199999999999999999999999999999991111111999999911199999999999999999999999999999911111119111199999999
    9999999999999911111111111111111111111111111111111111111111111199999999999999999999999999999991111111199111111119999999999999999999999999999111111111111119999999
    9999999999999911111111111111111111111111111111111111111111111199999999999999999999999999999911111111119111111111999999999999999999999999991111111111111111999999
    9999999999999911111111111111111111111111111111111111111111111199999999999999999999999999999911111111111111111111199999999999999999999999911111111111111111999999
    9999999999999999111111111111111111111111111111111111111111111999999999999999999999999999999911111111111111111111199111999999999999999999911111111111111111999999
    9999999999999991111111111111111111111111111111111111111111999999999999999999999999999999999911111111111111111111111111199999999999999999111111111111111111999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999911111111111111111111111111111999999999999999111111111111111111999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991111111111111111111111111111199999999999999911111111111111111999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999111111111111111111111111111119999999999999999111111111111119999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999111111111111111111111111111119999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999111111111111111111111111111111999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999999669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999996666999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999999666666999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999966666666669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999666666666669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999996666666666666999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999966666666666666999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999666666666666666666999999999999999999999999999999999999966669999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999996666666666666666666666999999999999999999999999999999996666669999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999966666666666666666666666669999999999999999999999999999666666666999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999666666666666666666666666666699999999999999999999999996666666666999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999966666666666666666666666666666669999999999999999999999966666666666699999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999996666666666666666666666666666666666999999999999999999996666666666666669999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999666666666666666666666666666666666666669999999999999999966666666666666669999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999996666666666666666666666666666666666666666669999999999999666666666666666666699999999999999999999999999999999999999999999999999
    9999999999999999999999999999999996666666666666666666666666666666666666666666666999999999996666666666666666666666669999999999999999999999999999999999999999999999
    9999999999999999999999999999999966666666666666666666666666666666666666666666666669999999966666666666666666666666666699999999999999999999999969999999999999999999
    9999999999999999999999999999966666666666666666666666666666666666666666666666666666699999666666666666666666666666666666999999999999999999996666699999999999999999
    9999999999999999999999999996666666666666666666666666666666666666666666666666666666966666666666666666666666666666666666666999999999999999666666669999999999999999
    9999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666669999999999966666666666699999999999999
    9999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666699999999666666666666699999999999999
    9999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666699966666666666666666999999999999
    9999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666699999999999
    9999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666669999999999
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666699999999
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666999999
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666999
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
    """))
current_level = 0
Hops_and_Paw = sprites.create(img("""
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . . . . .
      . . . . . . . . . . . . f . . .
      . . . . . . . . . . . . f f f .
      . . . . . . . . . . . . f f 5 f
      f f f f f f f f f f f f f f f f
      . . . . f f f f f f f f f f . .
      . . . . f f f f f f f f f . . .
      . . . . f . f . . . f . f . . .
      . . . . f . f . . . f . f . . .
      """),
    SpriteKind.player)
controller.move_sprite(Hops_and_Paw, 80, 0)
startLevel()

def on_on_update():
    if Hops_and_Paw.vy < 0:
      Hops_and_Paw.set_image(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . f . . . .
            . . . . . . . . . . . f f f . .
            . . . . . . . . . . . f f 5 f .
            . . . f . . . . . . f f f f f .
            . . . f . . . . . . f f f f . .
            . . f f . . . . . f f f . . . .
            . . f . . . . . . f f f f f f f
            . . f . . . . . f f f f . . . .
            . . f f . . . f f f f f f f f .
            . . . f f f f f f f . . . . . .
            . . . . . . f f f . . . . . . .
            . . . . . f f . f . . . . . . .
            . . . . . f . . f . . . . . . .
            . . . . . f . . . . . . . . . .
            """))
    elif Hops_and_Paw.vy > 0:
      Hops_and_Paw.set_image(img("""
            . . . . . . . f . . . . . . . .
            . . . . . . f . . . . . . . . .
            . . . . . f f . . . . . . . . .
            . . . . . f . . . . . . . . . .
            . . . . . f . . . . . . . . . .
            . . . . . f f . . . . . . . . .
            . . . . f f f f . . . . . . . .
            . . . . f f f f . . . . . . . .
            . . . . f f f f f . . . . . . .
            . . . . f . f f f f . . f . . .
            . . . . f . f f f f f f f f f .
            . . . . f . f . f f f f f f 5 f
            . . . . . . . . f f f f f f f f
            . . . . . . . . f . f . . . . .
            . . . . . . . . f . f . . . . .
            . . . . . . . . f . f f . . . .
            """))
    elif Hops_and_Paw.x % 2 == 0:
      Hops_and_Paw.set_image(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . f . . .
            . . . . . . . . . . . . f f f .
            . . . . . . . . . . . . f f 5 f
            f f f f f f f f f f f f f f f f
            . . . . f f f f f f f f f f . .
            . . . . f f f f f f f f f . . .
            . . . . f f . . . . . f f . . .
            . . . . f f . . . . . f f . . .
            """))
    else:
      Hops_and_Paw.set_image(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . f . . .
            . . . . . . . . . . . . f f f .
            . . . . . . . . . . . . f f 5 f
            f f f f f f f f f f f f f f f f
            . . . . f f f f f f f f f f . .
            . . . . f f f f f f f f f . . .
            . . . . f . f . . . f . f . . .
            . . . . f . f . . . f . f . . .
            """))
    if (Hops_and_Paw.is_hitting_tile(CollisionDirection.LEFT) or Hops_and_Paw.is_hitting_tile(CollisionDirection.RIGHT)) and Hops_and_Paw.vy >= 0:
      Hops_and_Paw.vy = 0
      Hops_and_Paw.ay = 0
      Hops_and_Paw.set_image(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . f f . .
            . . . . . . . . . . . f 5 f . .
            . . . . . . . . . . . f f f . .
            . . . . . . . . . . f f f f . .
            . . . . . . . . . . . . f f f f
            . . . . . . . . . . . . f f . .
            . . . . . . . . . . . . f f f f
            . . . . . . . f . . . . f f . .
            . . . . . . . f . . . . f f . .
            . . . . . . . f . . . . f f . .
            . . . . . . . f . . . . f f f f
            . . . . . . . f f . . . f f . .
            . . . . . . . . f f f f f f f f
            """))
    else:
      Hops_and_Paw.ay = 350
    if Hops_and_Paw.vx < 0 or Hops_and_Paw.is_hitting_tile(CollisionDirection.LEFT):
      Hops_and_Paw.image.flip_x()
      Hops_and_Paw.set_image(Hops_and_Paw.image)
game.on_update(on_on_update)

驴友花雕 发表于 2025-9-24 09:07:22

【花雕动手做】基于Kitronik可编程开发板之猫吃金币游戏

这是一个使用MakeCode Arcade开发的平台跳跃类"猫吃金币"游戏代码。

游戏核心机制

1. 自定义精灵类型
python
class SpriteKind:

    Coin = SpriteKind.create()      # 金币

    Flower = SpriteKind.create()    # 花朵(特殊物品)

    Fireball = SpriteKind.create()# 火球(敌人)

2. 游戏组件初始化
python
# 设置背景和主角

scene.set_background_color(9)

scene.set_background_image(云朵背景图片)

Hops_and_Paw = sprites.create(猫角色图片, SpriteKind.player)

controller.move_sprite(Hops_and_Paw, 80, 0)# 水平移动速度80,垂直为0(跳跃单独控制)


3. 核心游戏功能
关卡系统 startLevel()

python
def startLevel():

    # 根据当前关卡加载不同地图

    if current_level == 0:

      tiles.set_tilemap(tilemap("level"))

    elif current_level == 1:

      tiles.set_tilemap(tilemap("level_0"))

    elif current_level == 2:

      tiles.set_tilemap(tilemap("level_1"))

    else:

      game.over(True)# 通关

      

    # 重置游戏状态

    info.set_life(5)# 生命值

    tiles.place_on_random_tile(Hops_and_Paw, assets.tile("tile6"))# 出生点

物品生成系统

python
# 生成金币(有动画效果)

for value5 in tiles.get_tiles_by_type(assets.tile("tile4")):

    flower = sprites.create(金币图片, SpriteKind.Coin)

    animation.run_image_animation(flower, 金币动画序列, 100, True)

   

# 生成花朵(特殊物品)

for value6 in tiles.get_tiles_by_type(assets.tile("tile5")):

    flower = sprites.create(花朵图片, SpriteKind.Flower)



# 生成火球敌人

for value7 in tiles.get_tiles_by_type(assets.tile("tile11")):

    fireball = sprites.create(火球图片, SpriteKind.Fireball)

    animation.run_movement_animation(fireball, "c 0 -100 0 100 0 0", 2000, True)# 上下移动


4. 玩家控制与物理系统
跳跃机制

python
def on_a_pressed():

    if Hops_and_Paw.vy == 0:# 只有在地面上才能跳跃

      Hops_and_Paw.vy = -150# 向上速度



controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
角色动画系统 on_on_update()

python
def on_on_update():

    # 根据速度状态切换角色图像

    if Hops_and_Paw.vy < 0:    # 上升状态

      Hops_and_Paw.set_image(跳跃向上图片)

    elif Hops_and_Paw.vy > 0:# 下降状态

      Hops_and_Paw.set_image(跳跃向下图片)

    elif Hops_and_Paw.x % 2 == 0:# 行走动画(交替图像)

      Hops_and_Paw.set_image(行走图片1)

    else:

      Hops_and_Paw.set_image(行走图片2)

      

    # 物理系统

    if 碰到左右墙壁且在下落:

      Hops_and_Paw.vy = 0

      Hops_and_Paw.ay = 0# 取消重力

    else:

      Hops_and_Paw.ay = 350# 重力加速度

      

    # 方向翻转

    if 向左移动或碰到左墙:

      Hops_and_Paw.image.flip_x()

5. 碰撞检测系统
收集金币

python
def on_on_overlap(sprite, otherSprite):

    info.change_score_by(1)# 得分+1

    otherSprite.destroy()    # 金币消失
碰到花朵生成蜜蜂敌人

python
def on_on_overlap2(sprite4, otherSprite2):

    otherSprite2.destroy()

    bee = sprites.create(蜜蜂图片, SpriteKind.enemy)

    bee.follow(Hops_and_Paw, 50)# 蜜蜂会跟随玩家
敌人碰撞逻辑

python
def on_on_overlap4(sprite6, otherSprite4):

    otherSprite4.destroy()

    if Hops_and_Paw.y < otherSprite4.y:# 从上方踩敌人

      info.change_score_by(3)# 奖励分数

    else:# 从侧面碰到敌人

      info.change_life_by(-1)# 扣血

6. 关卡切换与游戏结束
通关条件

python
def on_overlap_tile2(sprite3, location2):

global current_level

current_level += 1 # 进入下一关

startLevel()



# 检测通关瓷砖(tile2)

scene.on_overlap_tile(SpriteKind.player, assets.tile("tile2"), on_overlap_tile2)
死亡条件

python
def on_overlap_tile(sprite2, location):

    game.over(False, effects.melt)# 融化效果



# 检测危险瓷砖(tile3)

scene.on_overlap_tile(SpriteKind.player, assets.tile("tile3"), on_overlap_tile)

游戏特点
多关卡设计:包含3个不同难度的关卡
丰富的动画:角色移动、金币旋转、敌人移动都有动画效果
物理系统:重力、跳跃、碰撞检测完整
敌人AI:蜜蜂会跟踪玩家,火球会规律移动
生命值系统:玩家有5条生命,可以承受多次伤害
得分机制:收集金币和踩敌人都能获得分数
这是一个典型的平台跳跃游戏,具有完整的游戏机制和流畅的操作体验。



驴友花雕 发表于 2025-9-24 09:13:48

【花雕动手做】基于Kitronik可编程开发板之猫吃金币游戏

图形编程参考实验程序



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



实验场景记录







驴友花雕 发表于 2025-9-24 09:16:59

【花雕动手做】基于Kitronik可编程开发板之猫吃金币游戏


页: [1]
查看完整版本: 【花雕动手做】基于Kitronik可编程开发板之猫吃金币游戏