Байланысты: Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )
Глава 14 • Ведение счета
Темп игры повышается вызовом
increase_speed()
в
check_bullet_alien_
collisions()
при уничтожении последнего пришельца во флоте, но перед созда-
нием нового флота:
game_functions.py def check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets):
...
if len(aliens) == 0:
# Уничтожение пуль, повышение скорости и создание нового флота.
bullets.empty()
ai_settings.increase_speed()
create_fleet(ai_settings, screen, ship, aliens)
Изменения значений настроек скорости
ship_speed_factor
,
alien_speed_factor
и
bullet_speed_factor
достаточно для того, чтобы ускорить всю игру!
Сброс скорости
Каждый раз, когда игрок начинает новую игру, все измененные настройки должны
вернуться к исходным значениям, иначе каждая новая игра будет начинаться с по-
вышенными настройками скорости предыдущей игры:
game_functions.py def check_play_button(ai_settings, screen, stats, play_button, ship, aliens,
bullets, mouse_x, mouse_y):
"""Запускает новую игру при нажатии кнопки Play."""
button_clicked = play_button.rect.collidepoint(mouse_x, mouse_y)
if button_clicked and not stats.game_active:
# Сброс игровых настроек.
ai_settings.initialize_dynamic_settings()
# Указатель мыши скрывается.
pygame.mouse.set_visible(False)
...
Игра Alien Invasion стала достаточно сложной и интересной. Каждый раз, когда
игрок очищает экран, игра должна слегка ускориться, а ее сложность должна слегка
возрасти. Если сложность игры возрастает слишком быстро, уменьшите значение
settings.speedup_scale
, а если наоборот, сложность недостаточна, — слегка уве-
личьте это значение. Найдите оптимальное значение, оценивая сложность игры
за разумный промежуток времени. Первая пара флотов должна быть простой, не-
сколько следующих — сложными, но возможными, а при последующих попытках
сложность должна становиться практически безнадежной.