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

【花雕动手做】Kitronik 可编程游戏开发板基于 ARCADE MakeCode之叮咚壁球游戏 简单

头像 驴友花雕 2025.09.23 2 0

00 (3).jpg

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

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

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

 

00 (4).jpg

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

MicroPython实验代码

 

代码
class ActionKind(Enum):
    Walking = 0
    Idle = 1
    Jumping = 2
    normalForehand = 3
@namespace
class SpriteKind:
    Ball = SpriteKind.create()
    Court = SpriteKind.create()
    Title = SpriteKind.create()
def keepPlayerInBounds():
    if raqueteer.x + raqueteer.y <= 88:
        if controller.left.is_pressed():
            raqueteer.set_position(raqueteer.x + 1, raqueteer.y + 1)
        else:
            raqueteer.set_position(raqueteer.x + 1, raqueteer.y - 0)
    if raqueteer.x - raqueteer.y >= 78:
        if controller.right.is_pressed():
            raqueteer.set_position(raqueteer.x - 1, raqueteer.y + 1)
        else:
            raqueteer.set_position(raqueteer.x - 1, raqueteer.y - 0)
    if raqueteer.bottom < 57:
        raqueteer.bottom = 57
    if raqueteer.bottom > 121:
        raqueteer.bottom = 121
    if raqueteer.right > 194:
        raqueteer.right = 194
    if raqueteer.left < -28:
        raqueteer.left = -28
def hitBall():
    global ballServed, numFloorBounces
    music.set_volume(10)
    music.play_tone(2000, music.beat(BeatFraction.SIXTEENTH))
    music.set_volume(100)
    theBall.set_image(img("""
        . . . . . . . .
        . . 4 2 2 4 . .
        . . 2 8 8 2 . .
        . . . 8 8 . . .
        . . 6 . . 6 . .
        9 . . 6 6 . . 9
        . 9 9 . . 9 9 .
        . . . 9 9 . . .
        """))
    ballShadow.set_velocity(randint(-40, 40), -1 * raqueteer.bottom + 20)
    ballZStats.vy = randint(-45, -60)
    if ballServed == False:
        ballServed = True
    else:
        numFloorBounces = 0
def letBallBounce():
    global overAmount, score, newXVelMult, numFloorBounces, ballHeight, oldHighScore
    if ballShadow.y > 122:
        overAmount = ballShadow.y - 122
        ballShadow.y = ballShadow.y - overAmount
        ballShadow.vy = backWallBounceDecay * (-1 * ballShadow.vy)
        music.play_tone(1, music.beat(BeatFraction.SIXTEENTH))
        scene.camera_shake(2, 100)
    if ballShadow.y < 53:
        overAmount = ballShadow.y - 53
        ballShadow.y = ballShadow.y - overAmount
        ballShadow.vy = bounceDecay * (-1 * ballShadow.vy)
        score = score + 1
        music.play_tone(1, music.beat(BeatFraction.SIXTEENTH))
        theBall.set_image(img("""
            8 8
            8 8
            """))
        music.stop_all_sounds()
    if ballShadow.vy < 0:
        newXVelMult = -1.125
    else:
        newXVelMult = -0.8888888
    if ballShadow.x + ballShadow.y <= 94:
        overAmount = ballShadow.x + ballShadow.y - 94
        ballShadow.x = ballShadow.x - overAmount
        ballShadow.vx = bounceDecay * (newXVelMult * ballShadow.vx)
    if ballShadow.x - ballShadow.y >= 65:
        overAmount = ballShadow.x - ballShadow.y - 65
        ballShadow.x = ballShadow.x - overAmount
        ballShadow.vx = bounceDecay * (newXVelMult * ballShadow.vx)
    if ballZStats.y > 127:
        overAmount = ballZStats.y - 127
        ballZStats.y = ballZStats.y - overAmount
        ballZStats.vy = bounceDecay * (-1 * ballZStats.vy)
        music.play_tone(1, music.beat(BeatFraction.SIXTEENTH))
        if ballServed == True:
            numFloorBounces += 1
        if numFloorBounces > 1:
            ballHeight = ballZStats.y - 127
            if score > oldHighScore:
                game.show_long_text("New High Score: " + ("" + convert_to_text(score) + ("      Previous High Score: " + convert_to_text(oldHighScore))),
                    DialogLayout.TOP)
                oldHighScore = score
            else:
                game.show_long_text("Score: " + ("" + convert_to_text(score) + ("                High Score: " + convert_to_text(oldHighScore))),
                    DialogLayout.TOP)
            score = 0
            raqueteer.set_image(img("""
                ..........eee...............
                .........eeeee..............
                .........eeeee..............
                .........eeeee..............
                ..........eee...............
                ..........444...............
                .......777444777............
                ......77777777777..bbb......
                ......77777777777..b1b......
                .....7777777777777.b.b......
                .....7777777777777.b1b......
                .....44.7777777.44.b.b......
                ....444.7777777.444b1b......
                ....44..7777777..444bb......
                ....444.7777777...44b.......
                .....44.7777777....44.......
                ........fffffff....44.......
                ........fffffff.....b.......
                ........fffffff.............
                ........fff.fff.............
                ........fff.fff.............
                ........fff.fff.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........fff.fff.............
                ........fff.fff.............
                """))
            resetBall()
    ballHeight = ballZStats.y - 127
    theBall.set_position(ballShadow.x, ballShadow.y + ballHeight - 1)
    theBall.z = ballShadow.y
    ballShadow.z = ballShadow.y + 1

def on_a_pressed():
    if ballHeight < -20:
        raqueteer.set_image(img("""
            ............eee..........bb...
            ...........eeeee........b1.b..
            ...........eeee4.......b1.1.b.
            ...........eee44......b1.1.1b.
            ............ee44......b.1.1b..
            ............444.......b1.1b...
            .........777444777....bbbb....
            ........77777777777.44........
            ........777777777774b4........
            .......77777777777774.........
            ........7777777777774.........
            ........447777777.44..........
            .........47777777.............
            ..........7777777.............
            ..........7777777.............
            ..........7777777.............
            ..........fffffff.............
            ..........fffffff.............
            ..........ffffffff............
            ..........fff.ffff............
            ..........fff..fff............
            ..........fff..fff............
            ..........444..444............
            .........444..444.............
            .........444..444.............
            ........444...444.............
            ........444...44..............
            ........44...fff..............
            .......fff...fff..............
            .......fff....................
            """))
    elif ballHeight < -10:
        raqueteer.set_image(img("""
            ............eee...............
            ...........eeeee..............
            ...........eeee4..............
            ...........eee44..............
            ............ee44..............
            ............444...............
            .........777444777............
            ........77777777777...........
            ........77777777777...........
            .......7777777777777..........
            ........777777777777..........
            ........447777777.44..........
            .........47777777.444...bbbbb.
            ..........7777777..444.b.1.1.b
            ..........7777777...4b4b1.1.1b
            ..........7777777....44b.1.1.b
            ..........fffffff......b1.1.1b
            ..........fffffff.......bbbbb.
            ..........ffffffff............
            ..........fff.ffff............
            ..........fff..fff............
            ..........fff..fff............
            ..........444..444............
            .........444..444.............
            .........444..444.............
            ........444...444.............
            ........444...44..............
            ........44...fff..............
            .......fff...fff..............
            .......fff....................
            """))
    else:
        raqueteer.set_image(img("""
            ............eee...............
            ...........eeeee..............
            ...........eeee4..............
            ...........eee44..............
            ............ee44..............
            ............444...............
            .........777444777............
            ........77777777777...........
            ........77777777777...........
            .......7777777777777..........
            ........777777777777..........
            ........447777777.44..........
            .........47777777.444.........
            ..........7777777..444........
            ..........7777777...4b4.......
            ..........7777777....44bbbb...
            ..........fffffff......b1.1b..
            ..........fffffff......b.1.1b.
            ..........ffffffff.....b1.1.1b
            ..........fff.ffff......b1.1.b
            ..........fff..fff.......b1.b.
            ..........fff..fff........bb..
            ..........444..444............
            .........444..444.............
            .........444..444.............
            ........444...444.............
            ........444...44..............
            ........44...fff..............
            .......fff...fff..............
            .......fff....................
            """))
    attemptHitForehand()
    animation.run_image_animation(raqueteer,
        [img("""
                ..........eee...............
                .......bbeeeee..............
                ......b.14eeee..............
                .....b.1.4eeee..............
                .....b1.14eee...............
                ......b1.1444...............
                .......b174447..............
                ........7777777.............
                .......77777777.............
                .......77777777.............
                .......77777777.............
                .......44777777.............
                ........4477777.............
                ........4477777.............
                .......44777777.............
                .......44777777.............
                .........ffffff.............
                .........ffffff.............
                .........ffffff.............
                .........ffffff.............
                .........ffffff.............
                .........fff444.............
                .........444444.............
                .........4444444............
                .........444.444............
                .........444.444............
                .........444..44............
                .........444..fff...........
                .........fff..fff...........
                .........fff................
                """),
            img("""
                ..........eee...............
                .........eeeee..............
                .........eeeee..............
                .........eeeee..............
                ..........eee...............
                ..........444...............
                .......777444777............
                ......77777777777...........
                ......77777777777...........
                .....7777777777777..........
                .....7777777777777..........
                .....44.7777777.44..........
                ....444.7777777.444.........
                ....44..7777777..44.........
                ....444.7777777.4b4.........
                .....44.7777777.44..........
                ........fffffffb............
                ........fffffff.............
                ........fffffff.............
                ........fff.fff.............
                ........fffbfff.............
                ........fff.fff.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........fff.fff.............
                ........fff.fff.............
                """)],
        150,
        False)
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)

def attemptHitBackhand():
    global xPositionDifference
    if abs(raqueteer.bottom - ballShadow.bottom) < 9:
        xPositionDifference = ballShadow.x - raqueteer.x
        if xPositionDifference > -17 and xPositionDifference < 1 and ballHeight > -28:
            hitBall()

def on_b_pressed():
    if ballHeight < -20:
        raqueteer.set_image(img("""
            ..bb.....eee..................
            .b.1b...eeeee.................
            b.1.1b..4eeee.................
            b1.1.1b.44eee.................
            .b1.1.b.44ee..................
            ..b1.1b..444..................
            ...bbbb.744777................
            ......777777777...............
            ......777777777...............
            ......777777777...............
            .....7777777777...............
            .....447777777................
            ......44777777................
            ......44777777................
            .....444777777................
            .....447777777................
            .......fffffff................
            .......fffffff................
            ......ffffffff................
            ......ffff.fff................
            ......fff..fff................
            ......fff..fff................
            ......444..444................
            .......444..444...............
            .......444..444...............
            .......444...444..............
            ........44...444..............
            ........fff...44..............
            ........fff...fff.............
            ..............fff.............
            """))
    elif ballHeight < -10:
        raqueteer.set_image(img("""
            .........eee..................
            ........eeeee.................
            ........4eeee.................
            ........44eee.................
            ........44ee..................
            .........444..................
            ........744777................
            ......777777777...............
            ......777777777...............
            .....7777777777...............
            .bbbb7777777777...............
            b.1.1447777777................
            b1.1.144777777................
            b.1.1.44777777................
            b1.1.44.777777................
            .bbbb44.777777................
            .......fffffff................
            .......fffffff................
            ......ffffffff................
            ......ffff.fff................
            ......fff..fff................
            ......fff..fff................
            ......444..444................
            .......444..444...............
            .......444..444...............
            .......444...444..............
            ........44...444..............
            ........fff...44..............
            ........fff...fff.............
            ..............fff.............
            """))
    else:
        raqueteer.set_image(img("""
            .........eee..................
            ........eeeee.................
            ........4eeee.................
            ........44eee.................
            ........44ee..................
            .........444..................
            ........744777................
            ......777777777...............
            ......777777777...............
            ......777777777...............
            .....7777777777...............
            .....447777777................
            ......44777777................
            ......44777777................
            .....444777777................
            .....447777777................
            ...bbbbfffffff................
            ..b1.1bfffffff................
            .b1.1.bfffffff................
            b1.1.1ffff.fff................
            b.1.1bfff..fff................
            .b.1b.fff..fff................
            ..bb..444..444................
            .......444..444...............
            .......444..444...............
            .......444...444..............
            ........44...444..............
            ........fff...44..............
            ........fff...fff.............
            ..............fff.............
            """))
    attemptHitBackhand()
    animation.run_image_animation(raqueteer,
        [img("""
                ............eee...............
                ...........eeeee.......bb.....
                ...........eeee4......b1.b....
                ...........eeee4.....b1.1.b...
                ............ee44....b1.1.1b...
                ............444.....b.1.1b....
                .........777444777..bb.1b.....
                ........77777777777.bbbb......
                ........77777777777b..........
                .......7777777777774..........
                .......7777777777774..........
                .......44.7777777.44..........
                ......444.7777777.............
                ......44..7777777.............
                ......444.7777777.............
                .......44.7777777.............
                ..........fffffff.............
                ..........fffffff.............
                ..........ffffffff............
                ..........fff.ffff............
                ..........fff..fff............
                ..........fff..444............
                ..........444..444............
                .........444...444............
                .........444...444............
                ........444....444............
                ........444....fff............
                ........44.....fff............
                .......fff....................
                .......fff....................
                """),
            img("""
                ..........eee...............
                .........eeeee..............
                .........eeeee..............
                .........eeeee..............
                ..........eee...............
                ..........444...............
                .......777444777............
                ......77777777777..bbb......
                ......77777777777..b1b......
                .....7777777777777.b.b......
                .....7777777777777.b1b......
                .....44.7777777.44.b.b......
                ....444.7777777.444b1b......
                ....44..7777777..444bb......
                ....444.7777777...44b.......
                .....44.7777777....44.......
                ........fffffff....44.......
                ........fffffff.....b.......
                ........fffffff.............
                ........fff.fff.............
                ........fff.fff.............
                ........fff.fff.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........fff.fff.............
                ........fff.fff.............
                """),
            img("""
                ..........eee...............
                .........eeeee..............
                .........eeeee..............
                .........eeeee..............
                ..........eee...............
                ..........444...............
                .......777444777............
                ......77777777777...........
                ......77777777777...........
                .....7777777777777..........
                .....7777777777777..........
                .....44.7777777.44..........
                ....444.7777777.444.........
                ....44..7777777..44.........
                ....444.7777777.4b4.........
                .....44.7777777.44..........
                ........fffffffb............
                ........fffffff.............
                ........fffffff.............
                ........fff.fff.............
                ........fffbfff.............
                ........fff.fff.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........444.444.............
                ........fff.fff.............
                ........fff.fff.............
                """)],
        150,
        False)
controller.B.on_event(ControllerButtonEvent.PRESSED, on_b_pressed)

def doPlayerMovement():
    global backAndForthValue
    raqueteer.z = raqueteer.bottom
    if not (controller.A.is_pressed() or controller.B.is_pressed()):
        if controller.left.is_pressed() or controller.right.is_pressed():
            if game.runtime() / 150 % 2 < 0.5:
                raqueteer.set_image(img("""
                    ............................
                    ..........eee...............
                    .........eeeee..............
                    .........eeeee..............
                    .........eeeee..............
                    ..........eee...............
                    ..........444...............
                    .......777444777............
                    ......77777777777...........
                    ......77777777777...........
                    .....7777777777777..........
                    .....7777777777777..........
                    .....44.7777777.44..........
                    ....444.7777777.444.........
                    ....44..7777777..44.........
                    ....444.7777777.4b4.........
                    .....44.7777777.44..........
                    ........fffffffb............
                    ........fffffff.............
                    ........fffffff.............
                    ........fff.fff.............
                    .......ffffbffff............
                    .......fff...fff............
                    .......444...444............
                    .......444...444............
                    .......444...444............
                    ......444.....444...........
                    ......444.....444...........
                    ......fff.....fff...........
                    ......fff.....fff...........
                    """))
            else:
                raqueteer.set_image(img("""
                    ..........eee...............
                    .........eeeee..............
                    .........eeeee..............
                    .........eeeee..............
                    ..........eee...............
                    ..........444...............
                    .......777444777............
                    ......77777777777...........
                    ......77777777777...........
                    .....7777777777777..........
                    .....7777777777777..........
                    .....44.7777777.44..........
                    ....444.7777777.444.........
                    ....44..7777777..44.........
                    ....444.7777777.4b4.........
                    .....44.7777777.44..........
                    ........fffffffb............
                    ........fffffff.............
                    ........fffffff.............
                    ........fff.fff.............
                    ........fffbfff.............
                    ........fff.fff.............
                    ........444.444.............
                    ........444.444.............
                    ........444.444.............
                    ........444.444.............
                    ........444.444.............
                    ........444.444.............
                    ........fff.fff.............
                    ........fff.fff.............
                    """))
        else:
            if controller.up.is_pressed() or controller.down.is_pressed():
                backAndForthValue = game.runtime() / 150 % 2
                if backAndForthValue < 0.5:
                    raqueteer.set_image(img("""
                        ..........eee...............
                        .........eeeee..............
                        .........eeeee..............
                        .........eeeee..............
                        ..........eee...............
                        ..........444...............
                        .......777444777............
                        ......77777777777...........
                        ......77777777777...........
                        .....7777777777777..........
                        .....7777777777777..........
                        .....44.7777777.44..........
                        ....444.7777777.444.........
                        ....44..7777777..44.........
                        ....444.7777777.4b4.........
                        .....44.7777777.44..........
                        ........fffffffb............
                        ........fffffff.............
                        ........fffffff.............
                        ........fff.fff.............
                        ........fffbfff.............
                        ........fff.fff.............
                        ........444.444.............
                        ........444.444.............
                        ........444.444.............
                        ........444.444.............
                        ........444.444.............
                        ........444.fff.............
                        ........444.fff.............
                        ........fff.................
                        ........fff.................
                        """))
                elif backAndForthValue < 1.5:
                    raqueteer.set_image(img("""
                        ..........eee...............
                        .........eeeee..............
                        .........eeeee..............
                        .........eeeee..............
                        ..........eee...............
                        ..........444...............
                        .......777444777............
                        ......77777777777...........
                        ......77777777777...........
                        .....7777777777777..........
                        .....7777777777777..........
                        .....44.7777777.44..........
                        ....444.7777777.444.........
                        ....44..7777777..44.........
                        ....444.7777777.4b4.........
                        .....44.7777777.44..........
                        ........fffffffb............
                        ........fffffff.............
                        ........fffffff.............
                        ........fff.fff.............
                        ........fffbfff.............
                        ........fff.fff.............
                        ........444.444.............
                        ........444.444.............
                        ........444.444.............
                        ........444.444.............
                        ........444.444.............
                        ........fff.444.............
                        ........fff.444.............
                        ............fff.............
                        ............fff.............
                        """))
def resetBall():
    global bounceDecay, backWallBounceDecay, numFloorBounces, ballServed
    mySprite2.z = -1
    theBall.z = 2
    ballShadow.vx = 0
    ballShadow.vy = 0
    ballShadow.set_position(80, 78)
    ballZStats.ay = 160
    ballZStats.vy = 20
    ballZStats.y = 105
    bounceDecay = 0.9
    backWallBounceDecay = 0.5
    numFloorBounces = 0
    ballServed = False
def attemptHitForehand():
    global xPositionDifference
    if abs(raqueteer.bottom - ballShadow.bottom) < 9:
        xPositionDifference = ballShadow.x - raqueteer.x
        if xPositionDifference < 17 and xPositionDifference > -5 and ballHeight > -35:
            hitBall()
backAndForthValue = 0
xPositionDifference = 0
ballHeight = 0
newXVelMult = 0
bounceDecay = 0
backWallBounceDecay = 0
overAmount = 0
numFloorBounces = 0
ballServed = False
score = 0
oldHighScore = 0
mySprite2: Sprite = None
ballShadow: Sprite = None
ballZStats: Sprite = None
theBall: Sprite = None
raqueteer: Sprite = None
courts = [img("""
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111
        11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111
        1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111
        11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111
        1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111
        11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111
        1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111
        11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111
        1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111
        fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111ddd
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111ddd111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111dddd111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11ddd1111111111
        ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfdd1111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfdddddddd1111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111ddddddd
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfd11111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f1dd111111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111dd1111111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111dd11111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111dd111111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111dd1111
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111dd11
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111dd
        111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        1111111111111111111111111111eeee1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        111111111111111111111111111eeeee1111111111111111111111111111111111111111111111111111111111111111111111111111141111111111111111111111111111111111f111111111111111
        111111111111111111111111111ee444111111111bbb1111111111111111111111111111111111111111111111111111111199999914411444111111111111111111111111111111f111111111111111
        111111111111111111111111111ee44411111111b1d1b111111111111111111111111111111111111111111119991999999911199999144122441111111111111111111111111111f111111111111111
        111111111111111111111111111e44441111111b1d1d1b11111111111111111111111111111111999919999911111119999999911111111111241111111111111111111111111111f111111111111111
        11111111111111111111111111144441111111b1d1d1db11111111111111111111191919919991111111119919999999111555555551118881241111111111111111111111111111f111111111111111
        11111111111111111111111177744111111111bd1d1d1b11111111111111199199919111911199991999991111155555555155555551118881241111111111111111111111111111f111111111111111
        11111111111111111111117777777111111111b1d1d1b111111111111111919919111199199919111199199999991111155555551111118881241111111111111111111111111111f111111111111111
        11111111111111111111147777777711111111bd1d1b1111111111111111111111919919991199111111111111119999999999115555111111241111111111111111111111111111f111111111111111
        11111111111111111111444777777771111111bbbbb11111111111111111111111111111111111919999919991111111111111999991141122441111111111111111111111111111f111111111111111
        1111111111111111111144777777777711144b1111111111111111111111111111111111111111111111111119999919999991111114114444111111111111111111111111111111f111111111111111
        111111111111111111111777777177741144411111111111111111111111111111111111111111111111111111111111111119999991441111111111111111111111111111111111f111111111111111
        11111111111111111111777777411744444b411111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111
        fffffffffffffffffffff7777444fff444fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111111111111111
        ddddddddddddddddddfffff77dd4dddd4dddddddddddd2dddddddddddddddddd2ddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111111
        dddddddddddddddddfffffffffdddddddddddddddddd2ddddddddddddddddddd222222222222222222ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111111
        ddddddddddddddddfffffffffffddddddddddddddddd2ddddddddddddddddddd2dddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111111111
        ddddddddddddddddfffffdffffffdddddddddddddddddddddddddddddddddddd222222222222222222ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111
        dddddddddddddddd4fffdddffff4dddddddddddddddd2ddddddddddddddddddd2ddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111
        ddddddddddddddd444fddddddf444dddddddddddddd2dddddddddddddddddddd2ddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111111
        dddddddddddddd444ddddddddd444ddddddddddddddddddddddddddddddddddd2ddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111
        ddddddddddddd444ddddddddd444ddddddddddddddd2dddddddddddddddddddd2dddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111
        dddddddddddd444ddddddddd444ddddddddddddddddddddddddddddddddddddd2dddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111
        dddddddddddf44ddddddddd444dddddddddddddddd2ddddddddddddddddddddd2dddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111
        ddddddddddfffddddddddd444ddddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111
        dddddddddddfffdddddddfffffdddddddddddddddd2ddddddddddddddddddddd2ddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111
        ddddddddddddffdddddddfffffdddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddd2dddddddddddddddddddddddddbbbddddddddddddddddddddddddddddddddddddddddddddf11
        ddddddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddd2dddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf
        ddddddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddd2dddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddddd2ddddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddddd2dddddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        ddddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddddd2dddddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        ddddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddddd2ddddddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        ddddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddddd2ddddddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddddddd2222222222222222222222222ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddddddd2dddddddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddd2ddddddddddddddddddddddddd2dddddddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        ddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddddddd2dddddddddddddddddddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        ddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddddddd222222222222222222222222222ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        ddddddddddddddddddddddddddddddddddddd2dddddddddddddddddddddddddd2ddddddddddddddddddddddddd2ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        """),
    img("""
        11111111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111111111111111111
        11111111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111111111111111111
        11111111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111111111111111111
        11111111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111111111111111111
        11111111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111111111111111111
        1111111111111111111111111111111111111dfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfd1111111111111111111111111111111111111
        11111111111111111111111111111111111dd1f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1dd11111111111111111111111111111111111
        111111111111111111111111111111111dd111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111dd111111111111111111111111111111111
        111111111111111111111111111111ddd11111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111ddd111111111111111111111111111111
        1111111111111111111111111111dd11111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111dd1111111111111111111111111111
        1111111111111111111111111ddd1111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111ddd1111111111111111111111111
        1111111111111111111111ddd1111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111ddd1111111111111111111111
        11111111111111111111dd1111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111dd11111111111111111111
        11111111111111111ddd111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111111ddd11111111111111111
        111111111111111dd111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111111111dd111111111111111
        111111111111ddd11111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111ddd111111111111
        1111111111dd11111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111111dd1111111111
        1111111ddd1111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111111111111111ddd1111111
        1111ddd1111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111111111111111111ddd1111
        11dd1111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111111111111111111111dd11
        dd111111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111111111111111111111111dd
        11111111111111111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111111111111111111111111
        1111111111111111111111111111111111111dfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfdd111111111111111111111111111111111111
        11111111111111111111111111111111111dd1f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1dd11111111111111111111111111111111111
        111111111111111111111111111111111dd111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111dd111111111111111111111111111111111
        11111111111111111111111111111111d11111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111d11111111111111111111111111111111
        111111111111111111111111111111dd111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111dd111111111111111111111111111111
        11111111111111111111111111111d11111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111d11111111111111111111111111111
        111111111111111111111111111dd111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111dd111111111111111111111111111
        1111111111111111111111111dd11111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111dd1111111111111111111111111
        111111111111111111111111d1111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111d111111111111111111111111
        1111111111111111111111dd11111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111dd1111111111111111111111
        111111111111111111111d1111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111d111111111111111111111
        1111111111111111111dd11111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111dd1111111111111111111
        11111111111111111dd1111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111111dd11111111111111111
        1111111111111111d111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111111111d1111111111111111
        11111111111111dd1111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111111111dd11111111111111
        1111111111111d111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111111111111d1111111111111
        11111111111dd1111111111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111111111111dd11111111111
        111111111dd111111111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111111111111111111111111dd111111111
        11111111d1111111111111111111111111111df1111111111111111111111111111111111111111111111111111111111111111111111111111111111fd1111111111111111111111111111d11111111
        111111dd111111111111111111111111111dd1f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1dd111111111111111111111111111dd111111
        11111d1111111111111111111111111111d111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111d1111111111111111111111111111d11111
        111dd1111111111111111111111111111d1111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111d1111111111111111111111111111dd111
        1dd11111111111111111111111111111d11111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111d11111111111111111111111111111dd1
        d111111111111111111111111111111d111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111d111111111111111111111111111111d
        11111111111111111111111111111dd1111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111dd11111111111111111111111111111
        1111111111111111111111111111d111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111d1111111111111111111111111111
        111111111111111111111111111d1111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111d111111111111111111111111111
        11111111111111111111111111d11111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111d11111111111111111111111111
        111111111111111111111111dd111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111dd111111111111111111111111
        11111111111111111111111d11111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111d11111111111111111111111
        1111111111111111111111d111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111d1111111111111111111111
        111111111111111111111d1111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f1111111111111111d111111111111111111111
        11111111111111111111d11111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f11111111111111111d11111111111111111111
        111111111111111111dd111111111111111111f1111111111111111111111111111111111111111111111111111111111111111111111111111111111f111111111111111111dd111111111111111111
        11111111111111111d11111111111111111111ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11111111111111111111d11111111111111111
        1111111111111111d11111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111111111111d1111111111111111
        111111111111111d11111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111111111111d111111111111111
        1111111111111dd11111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111111111111dd1111111111111
        111111111111d111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111111111111111111d111111111111
        11111111111d111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111111111111111111d11111111111
        1111111111d111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111111111111111111d1111111111
        11111111dd111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111111111111111111dd11111111
        1111111d1111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111111111111111d1111111
        111111d1111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111111111111111d111111
        11111d1111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111111111111111d11111
        1111d1111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111111111111111d1111
        11dd1111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111111111111111dd11
        1d11111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111111111111111d1
        d11111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111111111111111d
        11111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111111111111111111
        1111111111111111111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111111111111111111
        111111111111111111111f22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222f111111111111111111111
        11111111111111111111fdddddd2dddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2dddddd2ddddddf11111111111111111111
        1111111111111111111fdddddd2dddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2dddddd2ddddddf1111111111111111111
        111111111111111111fdddddd2dddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2dddddd2ddddddf111111111111111111
        11111111111111111fdddddd2dddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2dddddd2ddddddf11111111111111111
        1111111111111111fdddddd2ddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddd2ddddddf1111111111111111
        111111111111111fddddddd2dddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddd2ddddddf111111111111111
        11111111111111fddddddd2dddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2dddddd2dddddddf11111111111111
        1111111111111fddddddd2ddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddd2dddddddf1111111111111
        111111111111fddddddd2ddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddd2dddddddf111111111111
        11111111111fddddddd2ddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddd2dddddddf11111111111
        1111111111fddddddd2ddddddd2dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd2ddddddd2dddddddf1111111111
        111111111f22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222f111111111
        11111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111111
        1111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111111
        111111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111111
        11111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11111
        1111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1111
        111fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf111
        11fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf11
        1fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf1
        fddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        22222222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222dddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd2222ddd22222222
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
        """)]
scene.set_background_image(courts[0])
gameTitle = sprites.create(img("""
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        .....................888888....................................................................888.....888......................888....888......................
        .....................8888888...................................................................888.....888......................8888...888......................
        ....................88888888...................................................................888.....888.......................888....888.....................
        ....................888888888...................................................................888....888.......................888....888.....................
        ....................888888888...................................................................888....888........................888...888.....................
        ...................8888888888...................................................................888....8888.......................888....888....................
        ...................8888888888...................................................................888.....888.......................888....888....................
        ...................8888888888...................................................................888.....888........................888...888....................
        ..................88888888888...................................................................888.....888........................888....888...................
        ..................8888888888....................................................................888.....888........................888....888...................
        ..................8888888888....................................................................888.....888........................8888...888...................
        .................8888..88888....................................................................8888....888.........................888...8888..................
        .................8888...8888......888...........888..........888.......................888......8888....8888.88..........8888.......888....888..................
        .................888....888......88888.........88888........88888......888...888......88888...888888888..888.888.........88888......888....888..................
        ................8888....888.....888888........888888.......888888......888...888......888888..888888888..888..888.......8888888......888...8888.................
        ................8888...8888....88888888......8888888.......8888888.....888...888.....8888888..888888888..888..8888......8888888......888....888.................
        ................888....8888....88888888......88888888.....88888888.....888...888.....88888888.888888888..888..8888......88888888.....888....888.................
        ...............8888....888....888888888.....888888888.....88888888.....888...888.....88888888.888888888..888..88888....8888888888....8888...8888................
        ...............8888...8888....888888888.....888888888....888888888.....888...888....888888888..88888888..888..88888....8888888888.....888....888................
        ...............888..88888....8888888888....8888888888....8888888888....888...888....8888888888...8888....8888.888888...8888888888.....888....888................
        ..............8888..88888....8888888888....8888888888....8888888888....888...888....8888..8888...8888....8888..88888...88888888888....888....8888...............
        ..............8888..88888...88888888888....8888888888...88888888888....888...888....8888...888...8888.....888..88888...88888888888....8888....888...............
        ..............888..88888....88888888888...88888.88888...88888.88888....888...888....888....888...8888.....888..888888..888888888888....888....888...............
        .............8888..8888.....8888..88888...8888...8888...8888...8888....888...888....888....8888..8888.....888....8888..888888..8888....888....8888..............
        .............8888..8888....8888...8888....8888..........8888...8888....888...888...8888....8888..8888.....888.....888...8888....888....8888....888..............
        .............8888.8888.....8888....888....888...........888....8888....888...888...8888..888888..8888.....888.....8888..8888....8888....888....888..............
        ............8888..8888.....888....8888...8888..........8888....8888....888...888...8888..888888...888.....8888....8888..8888....8888....888....8888.............
        ............8888..8888....8888....8888...8888..........8888....8888...8888...888...8888..888888...888.....8888....8888..8888.....888....8888...8888.............
        ............8888..8888....8888....8888...8888..........8888....8888...8888...888...8888..888888...888.....8888....8888..8888.....8888...8888...8888.............
        ...........8888..88888....888.....8888...8888...8888...8888....8888...8888...888...8888...........8888....8888....8888...8888....8888....888....8888............
        ...........8888..8888....8888.....888....8888...8888...8888....8888...8888...888...8888...........8888....88888...88888..8888.....888....888....8888............
        ...........8888..8888....8888.....888...88888...8888...8888....8888...8888...888...88888..........88888....8888...88888..8888.....888....8888....888............
        ..........8888...8888....88888...8888...88888...8888...88888...8888...8888...888...88888..........888888...88888.888888...8888....8888...8888....8888...........
        ..........8888...8888....888888..8888...888888.88888...888888..8888...88888.8888...88888...........88888...888888888888...888888..8888....888....8888...........
        ..........8888..88888....888888..8888...88888888888....888888..8888...8888888888....88888..........88888....88888888888...8888888.8888....8888....888...........
        .........8888...88888....888888..888....88888888888....888888..888....8888888888....88888888.......88888....88888888888....888888..888....8888....8888..........
        .........8888...88888....888888.8888....88888888888....888888..888.....888888888.....8888888.......88888....88888888888....888888..8888....888....8888..........
        .........8888...88888....88888..8888....8888888888.....888888..888.....888888888.....8888888........88888....8888888888.....88888..8888....8888....888..........
        ........88888..888888....88888..8888....8888888888.....888888..888.....88888888......88888888.......88888....8888888888.....888888.8888....8888....8888.........
        ........8888...88888.....88888..888......88888888.......88888.8888.....88888888.......8888888........8888.....888888888......88888..888....8888....8888.........
        ........8888...88888.....88888.8888......88888888.......88888.8888.....88888888.......88888888.......8888.....88888888.......88888..8888....8888...88888........
        .......88888...88888.....8888..8888......8888888........8888..8888......888888.........888888.........888......8888888........8888..8888....8888....8888........
        .......8888....88888......888..8888.......88888..........888..8888......888888.........888888..........88.......88888..........8888.8888....8888....8888........
        ........88......888........88...88.........888............88..8888.......8888...........8888............8........8888...........888..888.....88......88.........
        ..............................................................8888..............................................................................................
        ......8888888888888888888888888888888888888888888888888888888.8888.88888888888888888888888888888888888888888888888888888888888888888888888888888888888888.......
        .....88888888888888888888888888888888888888888888888888888888.8888.888888888888888888888888888888888888888888888888888888888888888888888888888888888888888......
        .....88888888888888888888888888888888888888888888888888888888.8888.888888888888888888888888888888888888888888888888888888888888888888888888888888888888888......
        ....888888888888888888888888888888888888888888888888888888888.8888.8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.....
        ....888888888888888888888888888888888888888888888888888888888.8888.8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.....
        .....88888888888888888888888888888888888888888888888888888888.8888.888888888888888888888888888888888888888888888888888888888888888888888888888888888888888......
        ..............................................................8888..............................................................................................
        ...............................................................8888.............................................................................................
        ...............................................................8888.............................................................................................
        ...............................................................8888.............................................................................................
        ...............................................................8888.............................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        ................................................................................................................................................................
        """),
    SpriteKind.Title)
game.set_dialog_frame(img("""
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    . . . . . . . . . . . . . . .
    """))
game.show_long_text("", DialogLayout.BOTTOM)
gameTitle.destroy()
game.set_dialog_frame(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 b b b b b b b b b f f f
    f f b b d d d d d d d b b f f
    f f b d 1 1 1 1 1 1 1 d b f f
    f f b d 1 1 1 1 1 1 1 d b f f
    f f b d 1 1 1 1 1 1 1 d b f f
    f f b d 1 1 1 1 1 1 1 d b f f
    f f b d 1 1 1 1 1 1 1 d b f f
    f f b d 1 1 1 1 1 1 1 d b f f
    f f b b d d d d d d d b b f f
    f f f b b b b b b b b b f f f
    f f f f f f f f f f f f f f f
    . f f f f f f f f f f f f f .
    """))
raqueteer = sprites.create(img("""
        ..........eee...............
        .........eeeee..............
        .........eeeee..............
        .........eeeee..............
        ..........eee...............
        ..........444...............
        .......777444777............
        ......77777777777..bbb......
        ......77777777777..b1b......
        .....7777777777777.b.b......
        .....7777777777777.b1b......
        .....44.7777777.44.b.b......
        ....444.7777777.444b1b......
        ....44..7777777..444bb......
        ....444.7777777...44b.......
        .....44.7777777....44.......
        ........fffffff....44.......
        ........fffffff.....b.......
        ........fffffff.............
        ........fff.fff.............
        ........fff.fff.............
        ........fff.fff.............
        ........444.444.............
        ........444.444.............
        ........444.444.............
        ........444.444.............
        ........444.444.............
        ........444.444.............
        ........fff.fff.............
        ........fff.fff.............
        """),
    SpriteKind.player)
raqueteer.set_position(31, 88)
controller.move_sprite(raqueteer, 80, 50)
sprite_list = sprites.all_of_kind(SpriteKind.player)
theBall = sprites.create(img("""
    8 8
    8 8
    """), SpriteKind.Ball)
ballZStats = sprites.create(img("""
    . .
    . .
    """), SpriteKind.Ball)
ballShadow = sprites.create(img("""
    b b
    b b
    """), SpriteKind.Ball)
mySprite2 = sprites.create(courts[1], SpriteKind.Court)
resetBall()
oldHighScore = 0
score = 0
music.set_tempo(240)
game.show_long_text("After serving, ball can only bounce once on floor between hits.",
    DialogLayout.TOP)
me = sprites.create(img("""
        d 1 d d d 1 d d d 1 d d d 1 d d d d 1 1 d d 1 1 d d 1 d 1
        1 d 1 d 1 d 1 d 1 d 1 d 1 d 1 d d d 1 d 1 d 1 d 1 d 1 d 1
        d d 1 d 1 d 1 d d d 1 d 1 d 1 d d d 1 1 d d 1 d 1 d 1 1 1
        d 1 d d 1 d 1 d d 1 d d 1 d 1 d d d 1 d 1 d 1 d 1 d 1 d 1
        1 1 1 d d 1 d d 1 1 1 d d 1 d d d d 1 d 1 d 1 1 d d 1 d 1
        """),
    SpriteKind.player)
me.set_position(144, 116)
game.show_long_text("  Forehand: A / [Space]   Backhand: B / [E]",
    DialogLayout.TOP)
me.destroy()

def on_on_update():
    letBallBounce()
    doPlayerMovement()
    keepPlayerInBounds()
game.on_update(on_on_update)

MakeCode 叮咚壁球游戏代码解读
这是一个复杂的壁球模拟游戏,具有真实的物理效果和精美的视觉效果。玩家控制一个角色在倾斜的壁球场上击打壁球,球会在墙壁和地面之间反弹。游戏具有真实的3D视觉效果、物理模拟和专业的壁球规则。

代码结构分析

1. 自定义枚举和精灵类型
python
class ActionKind(Enum):
   Walking = 0
   Idle = 1
   Jumping = 2
   normalForehand = 3

class SpriteKind:
   Ball = SpriteKind.create()
   Court = SpriteKind.create()
   Title = SpriteKind.create()
   
2. 核心游戏机制
边界限制系统
python
def keepPlayerInBounds():
使用复杂的数学条件限制玩家在倾斜的球场内移动

考虑了球场的倾斜角度和边界

击球系统
python
def hitBall():
def attemptHitForehand():
def attemptHitBackhand():
正手击球(A按钮):球在角色右侧时击球

反手击球(B按钮):球在角色左侧时击球

击球时播放音效并改变球的外观

重置地板弹跳计数

物理反弹系统
python
def letBallBounce():
这是游戏最复杂的部分,处理球的多种反弹:

后墙反弹:球碰到后墙时衰减反弹

前墙反弹:球碰到前墙时得分并完全反弹

侧墙反弹:根据球的运动方向调整反弹角度

地板反弹:球落地时检查游戏是否结束

3. 3D视觉效果实现
游戏使用巧妙的技巧模拟3D效果:

球的高度系统
python
ballHeight = ballZStats.y - 127
theBall.set_position(ballShadow.x, ballShadow.y + ballHeight - 1)
theBall.z = ballShadow.y
ballShadow.z = ballShadow.y + 1
ballShadow:球在地面上的投影

ballZStats:球的垂直高度状态

theBall:实际显示的球,位置由投影位置和高度决定

透视效果
通过设置精灵的z坐标实现深度排序,创造3D透视效果。

4. 动画系统
角色动画
python
animation.run_image_animation(raqueteer, [img1, img2, img3], 150, False)
击球时播放多帧动画

根据击球高度显示不同的准备姿势

空闲时有呼吸动画效果

动态角色姿态
python
def doPlayerMovement():
根据控制输入和游戏时间动态改变角色图像

创造生动的角色移动效果

5. 游戏状态管理
计分系统
python
if ballShadow.y < 53:  # 前墙反弹
   score = score + 1
游戏结束条件
python
if numFloorBounces > 1:  # 球落地超过一次
   # 显示分数并重置游戏
高分记录
python
if score > oldHighScore:
   game.show_long_text("New High Score: " + str(score), DialogLayout.TOP)
   oldHighScore = score
   
6. 球场设计
游戏包含两个精心设计的球场图像:

主球场:显示游戏进行中的场景

背景球场:作为视觉背景增强深度感

球场特征:

倾斜的设计模拟真实壁球场

详细的纹理和阴影效果

明确的前墙、后墙和侧墙边界

7. 物理参数
python
bounceDecay = 0.9        # 正常反弹衰减
backWallBounceDecay = 0.5 # 后墙反弹衰减
ballZStats.ay = 160      # 垂直重力加速度

图形编程参考实验程序

 

154.jpg


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

 

00215--.gif


实验场景记录

 

155 (1).jpg
155 (2).jpg
155 (3).jpg
155 (4).jpg

评论

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