diff --git a/NOTES.md b/NOTES.md index 00c5267..f7ebac8 100644 --- a/NOTES.md +++ b/NOTES.md @@ -2010,3 +2010,17 @@ Sprung = Hocke(10) -> aufwaerts(8) -> abwaerts(9); Stehen = frontal(17) am Spawn, seitlich(0) nach Bewegung. Die Tabelle [4][8,8,8] ist also die Aufwaerts-Sprungpose (Set beim Absprung), nicht "Idle" -- Eintrag (26)/ (27) entsprechend ueberholt. + +## 26.07.2026 (29) -- TIME-OUT-Tafel + Sprungweite statt -hoehe + +- Stefans Screenshot: Original zeigt bei abgelaufener Zeit eine + TIME-OUT-Tafel (Menue-Rahmen, weisse Box, gelbe Schrift). Umgesetzt: + 2.5s Tafel (Taste bricht ab), dann Leben -1 + Respawn mit frischer + Zeit; Sterbeanimation entfaellt beim Timeout. +- Sprung-Korrektur "nicht hoeher sondern weiter": JUMP_VELOCITY zurueck + auf -400 (Scheitel 86px), stattdessen AIR_SPEED_FACTOR=1.27 (in der + Luft schnelleres Horizontaltempo) -> Sprungweite 92 -> 114px (~+1 + Blattlaenge, Stefans Live-DOSBox-Vergleich). +- DOSBox-Durchspiel-Aufnahme W1L1 laeuft (capture3.py mit down/up- + Timeline: Rechts halten + periodische Spruenge, Idle-Fenster, + Links-Passage; ~1800 Frames a 0.2s nach scratchpad/w1l1_run/). diff --git a/game/level.py b/game/level.py index b0cccfc..ed583e6 100644 --- a/game/level.py +++ b/game/level.py @@ -803,14 +803,35 @@ def run_level(clock, assets, audio_paths, map_name='W1L1'): keys = pygame.key.get_pressed() time_left = info['time'] - (time.monotonic() - start) - # Zeit abgelaufen -> wie Herzen leer: Sterbeanimation, Leben -1 - # (Stefans Fund: "bei 0 wird mir kein Leben abgezogen") + # Zeit abgelaufen -> TIME-OUT-Tafel (Original-Screen, Stefans + # Screenshot: Menue-Rahmen + "TIME OUT"), dann Leben -1 und Respawn if dying is None and time_left <= 0: - hearts = 0 - player.hurt_t = 0.0 - player.force_slot = SLOT_DEATH - dying = dict(t=0.0, vy=-260.0, - drop_y=player.y - 40.0, drop_vy=-30.0) + from .menu import MenuAssets + m = MenuAssets(assets) + panel = m.menu_bg.copy() + txt = m.font_big.render('TIME OUT') + panel.blit(txt, ((320 - txt.get_width()) // 2, 72)) + end = time.monotonic() + 2.5 + while time.monotonic() < end: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + return 'quit' + if event.type == pygame.KEYDOWN: + end = 0 + intro._blit_centered(intro.build_letterboxed(panel)) + pygame.display.flip() + clock.tick(30) + lives -= 1 + if lives <= 0: + return 'map' + hearts = 6 + player.x, player.y = spawn_px + player.vy = 0.0 + player.spawn_t = SPAWN_ANIM_SECONDS + player.moved = False + player.jump_lock = True + start = time.monotonic() + continue if dying is None: player.update(level, dt, keys) else: