Rozdział 19 · Funkcje gry
Prędkość i wzrost złożoności
Każde jabłko nie tylko zwiększa wynik, ale też przelicza opóźnienie — gra stopniowo przyspiesza.
Gra przyspiesza wraz z wynikiem
Rozdział 19.14 już pokazała formułę – tutaj łączy się ona z grą: po każdym Zjedzonego jabłka nie tylko przeliczany jest wynik, ale także opóźnienie kolejnego ticku:
speed_progression.py
if grow:
state.score += FOOD_SCORE
state.high_score = max(state.high_score, state.score)
state.food = choose_food(state.snake, self.rng)
state.delay_ms = calculate_delay(state.score)
Nowa wartość delay_ms wejdzie w życie przy następnym wezwaniu
_schedule_next_tick() — poprzedni tick został już zaplanowany z
wcześniejszym opóźnieniem i to jest w porządku: prędkość zmienia się płynnie, bez szarpnięć.
min_ms jest świadomym ograniczeniem, a nie przypadkiem
Rozdział 19.14 już została wyjaśniona
max(min_ms, ...) — tutaj widać, dlaczego jest to potrzebne w praktyce: bez niego wystarczająco długa gra prędzej czy później doprowadzi opóźnienie do zera.Praktyka: Szybkość rośnie wraz z liczeniem
Automatyczne sprawdzanie – funkcja eat_food(): każdym jabłkiem przelicza zarówno liczbę, jak i opóźnienie