LEVEL 1 SPIELBAR: game/level.py -- Tiles, Kamera, Tony-Physik, HUD, Musik

Weltkarte: SPACE startet Level 1 (Original-Verhalten per DOSBox-Referenz:
Return tut dort nichts, kein sichtbarer Level-Cursor am Spielstart).

Level 1 = W1L1.MAP -- per Template-Matching des DOSBox-Gameplay-Screenshots
gegen die gerenderten Maps identifiziert (W1L0 ist NICHT Level 1).

game/level.py:
- Level: MAP+ICO+Weltpalette laden, komplette Map einmalig vorrendern,
  Kamera blittet 320x176-Ausschnitt (HUD 320x24 darunter, wie Original).
- Kollision: MAP-ctype Bit 32 = solide (40=Boden, 32=Fuellung; empirisch
  an der Spawn-Plattform verifiziert).
- Tony: TONY.BOB (53 Frames; 8-Phasen-Gehzyklus, gerade=links/ungerade=
  rechts), AABB-Physik gegen das Tile-Grid, laufen/springen/ducken,
  Fusspunkt-basiert. Physikwerte v1 nach Gefuehl (Feinschliff nach Test).
- HUD-Nachbildung (Keks/Item/Score/Herzen/Leben/Uhr 10:00-Countdown) mit
  FON_1B-Ziffern; GAMEBAR-Icons geladen (Original-Ziffern-Palette unklar).
- Levelmusik: ONGAME2 Song 0 als v1-ANNAHME (nach Gehoer korrigieren, wie
  beim Factor5-Sound); wird im Audio-Preload mitgerendert.
- ESC -> zurueck zur Karte (Titelmusik loopt wieder), Fenster-X -> Ende.

Verifiziert: E2E unter Xvfb mit gehaltenen XTEST-Tasten -- laufen (Kamera
scrollt), springen, Plattformkante runterfallen, unterm Brueckenbogen
zurueck, ESC->Karte->Menue->QUIT rc=0. Level-Standbild deckungsgleich zur
DOSBox-Referenz. --once-Regression exit 0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-25 01:17:44 +02:00
co-authored by Claude Fable 5
parent 4517efbdf8
commit 973e290cf6
5 changed files with 420 additions and 7 deletions
+11 -3
View File
@@ -414,14 +414,22 @@ def run_highscores(clock, m):
def run_worldmap(clock, m):
'''Weltkarte (KARTE.PCC -- kompletter 320x200-Screen inkl. Rahmen und
Charakteren). v1: statisch; die kleinen Animationsframes KARTE0-9 und die
Levelauswahl folgen mit dem Gameplay. ESC/Taste -> zurueck ins Menue.'''
Charakteren). Wie im Original (DOSBox-Referenz 25.07.2026): SPACE startet
Level 1 (Return tut im Original nichts, wir nehmen beides; Pfeiltasten
bewegen am Spielstart keinen sichtbaren Cursor -- es ist nur Level 1
verfuegbar). ESC -> zurueck ins Menue.
Rueckgabe: 'level' | 'menu' | 'quit'. Die Karten-Animationen (KARTE0-9)
folgen spaeter.'''
canvas = m.karte
def draw(_t):
_present(canvas)
def key(event):
return 'menu'
if event.key == pygame.K_ESCAPE:
return 'menu'
if event.key in (pygame.K_SPACE, pygame.K_RETURN):
return 'level'
return None
return _menu_loop(clock, draw, key)