回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

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

头像 驴友花雕 2025.09.24 47 0

00 (2).jpg

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

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

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

 

00 (4).jpg

作为学习、练习与尝试,这里创建一个猫吃金币的小游戏。
打开网页版: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)

这是一个使用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条生命,可以承受多次伤害
得分机制:收集金币和踩敌人都能获得分数
这是一个典型的平台跳跃游戏,具有完整的游戏机制和流畅的操作体验。

图形编程参考实验程序

 

165.jpg


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

 

00216---.gif


实验场景记录

 

166 (1).jpg
166 (2).jpg
166 (3).jpg

评论

user-avatar
icon 他的勋章
    展开更多