Rozdział 19 · Funkcje gry

High Score

score i high_score to różne pola o różnych czasach życia: jedno jest resetowane po restarcie, drugie go przeżywa.

Rekord przetrwa restart — licznik nie

Realne okno: jedna głowa na środku boiska, tablica wyników powyżej pokazuje Wynik: 0 Rekord: 40
Rzeczywiste okno: po restart() wynik został zresetowany, a rekord pozostał taki sam.

score oraz high_score — dwa różne pola o różnym czasie życia. Rozdział 19.23 już pokazał, że restart() wyraźnie przekazuje high_score w Nowe państwo, zamiast tworzyć je od nowa:

high_score.py
def new_game_state(rng, *, high_score=0):
    snake = [(0, 0)]
    return GameState(
        snake=snake,
        # ...
        score=0,               # zawsze od zera
        high_score=high_score, # przekazane przez wywołujący kod
        # ...
    )
PoleCo się dzieje przy restart()
scorezawsze resetuje się do 0 — nowa gra zaczyna się od czystego wyniku
high_scoreprzekazywana z przeszłości state.high_score doświadcza restartu
high_score jest aktualizowany w max() momencie, a nie na końcu gry
state.high_score = max(state.high_score, state.score) wywoływana od razu przy każdym zjedzonym jabłku (rozdział 19.24) — rekord nie wymaga „podsumowania” osobno na końcu: jest już dokładny w każdej chwili gry, w tym na ekranie Game Over.
Praktyka: album zaczyna się wznowiać
Automatyczne sprawdzanie — funkcja update_high_score(): rekord tylko rośnie
Otwórz praktykę →