Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。
它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。
凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。

作为学习、练习与尝试,这里创建一个叮咚壁球的小游戏。
打开网页版: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 # 垂直重力加速度
图形编程参考实验程序

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

实验场景记录




评论