Portrait 360x480 table with regular-sized flippers

Rotate the playfield to portrait like a real pinball machine:
- canvas 480x360 landscape -> 360x480 portrait; playfield 308px wide,
  ~390px tall, with HUD, title/game-over screens and HUD re-laid out
  for the narrow format (score/best top row, balls/stars/fever below)
- flippers reduced to a regular ~quarter-width size (82px) pivoting at
  the lower corners, tips meeting over a wide centre drain
- table elements re-placed for the taller field: 3 star lanes up top,
  candy bumpers mid-field, slingshots and floor-level outlane guard
  posts at the bottom; data-checked with the autoplay bot (~350 bumper
  hits / 30k frames, centre+side drains, no stuck balls)
- probes & autoplay policy updated for the portrait geometry; all 13
  pixel-probes pass
This commit is contained in:
georgios
2026-09-09 19:02:11 +02:00
parent c08e22c873
commit cf2c0e4558
18 changed files with 134 additions and 128 deletions
+4 -4
View File
@@ -49,9 +49,9 @@ def main():
t.reset_ball_in_cannon()
g.pending = "live"
t.ball_live = True
t.ball.x, t.ball.y = 415, 60
t.ball.x, t.ball.y = 295, 75
t.ball.vx, t.ball.vy = -2.2, 3.1
for _ in range(70):
for _ in range(80):
g.keys["fire"] = False
g.update()
save(g, "3_play", out)
@@ -60,13 +60,13 @@ def main():
g.combo = 4
g.combo_t = 150
g.fever = 60 * 12
g.add_msg("+500", 150, 150, (255, 214, 92))
g.add_msg("+500", 180, 150, (255, 214, 92))
for st in t.stars:
st["lit"] = True
b = t.bumpers[0]
b["squash"] = 4
b["face_t"] = 0.0
g.particles.append(dict(x=150, y=150, life=14, kind="ring", color=(255, 255, 255)))
g.particles.append(dict(x=180, y=150, life=14, kind="ring", color=(255, 255, 255)))
g.bubble = ["CANDY FEVER!", 90, "star"]
save(g, "4_fever", out)