Rozdział 19 · Zasady gry

Game Over jako państwo

Kolizja nie tylko zatrzymuje ruch, ale przenosi grę do osobnego stanu GAME_OVER.

Game Over — stan, a nie tylko napis na ekranie

Prawdziwe okno: S--kształtny wąż, duży napis GAME OVER i licznik na wierzchu pola
Rzeczywiste okno: zderzenie z własnym ciałem przenosi grę do GAME_OVER — ta sama inskrypcja pojawiłaby się również przy zderzeniu ze ścianą.

Kiedy is_wall_collision() lub is_self_collision() True odliczanie tyka nie tylko zatrzymuje ruch — on tłumaczy state.status w GAME_OVER i rysuje nakładkę na ostatniej klatce gry:

game_over.py
if is_wall_collision(head):
    state.status = GameStatus.GAME_OVER
    self.render()
    self._show_overlay("GAME OVER", f"Ocena: {state.score}  | R to nowa gra")
    return
GAME_OVER nie wywołuje kolejnych ticków
game_tick() sprawdza się na samym początku if state.status is not RUNNING: returnGAME_OVER dociera tutaj w taki sam sposób jak PAUSED. Jedyny sposób, by znów się ruszyć, to restart() (rozdział 19.23), który wyraźnie tworzy nowy stan.

GAME_OVER — to nie jest jedyny status terminalny: rozdział 19.18 pokazuje drugi, znacznie rzadszy przypadek — GameStatus.WON, gdy wąż zajmuje dosłownie całe pole. Oba zatrzymują tiki w ten sam sposób, różni się tylko powód i tekst nakładki.

Praktyka: przejście do GAME_OVER
Automatyczne sprawdzanie – funkcja, resolve_tick(): której kolizje zamieniają grę w GAME_OVER
Otwórz praktykę →