Глава 19 · Функции игры
Скорость и рост сложности
Каждое яблоко не только увеличивает счёт, но и пересчитывает задержку — игра постепенно ускоряется.
Игра ускоряется вместе со счётом
Раздел 19.14 уже показал формулу — здесь она подключается к самой игре: после каждого съеденного яблока пересчитывается не только счёт, но и задержка следующего тика:
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)
Новое значение delay_ms вступит в силу на следующем вызове
_schedule_next_tick() — предыдущий тик уже был запланирован со
старой задержкой, и это нормально: скорость меняется плавно, не рывком.
min_ms — сознательный предел, а не случайность
Раздел 19.14 уже объяснял
max(min_ms, ...) — здесь видно, зачем он нужен на практике: без него достаточно долгая игра рано или поздно довела бы задержку до нуля.Практика: скорость растёт со счётом
Автоматическая проверка — функция eat_food(): каждое яблоко пересчитывает и счёт, и задержку