М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет213/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   209   210   211   212   213   214   215   216   ...   334
Байланысты:
Изучаем Python

alien_invasion.py
def _ship_hit(self):
"""Обрабатывает столкновение корабля с пришельцем."""
if stats.ships_left > 0:
# Уменьшение ships_left.
self.stats.ships_left -= 1
...


Определение исполняемых частей игры
291
# Пауза.
sleep(0.5)
else:
self.stats.game_active = False
Большая часть кода 
_ship_hit()
осталась неизменной. Весь существующий код 
был перемещен в блок 
if
, который проверяет, что у игрока остался хотя бы один 
корабль. Если корабли еще остаются, программа создает новый флот, делает паузу 
и продолжает игру. Если же игрок потерял последний корабль, флаг 
game_active
переводится в состояние 
False
.
Определение исполняемых частей игры
В файле 
alien_invasion .py
необходимо определить части игры, которые должны вы-
полняться всегда, и те части, которые должны выполняться только при активной 
игре:
alien_invasion.py
def run_game(self):
""" Запуск основного цикла игры."""
while True:
self._check_events()
if self.stats.game_active:
self.ship.update()
self._update_bullets()
self._update_aliens()
self._update_screen()
В основном цикле всегда должна вызываться функция 
_check_events()
, даже если 
игра находится в неактивном состоянии. Например, программа все равно должна 
узнать о том, что пользователь нажал клавишу Q для завершения игры или щелк-
нул на кнопке закрытия окна. Также экран должен обновляться в то время, пока 
игрок решает, хочет ли он начать новую игру. Остальные вызовы функций должны 
происходить только при активной игре, потому что в то время, когда игра неактив-
на, обновлять позиции игровых элементов не нужно.
В обновленной версии игра должна останавливаться после потери игроком по-
следнего корабля.


Достарыңызбен бөлісу:
1   ...   209   210   211   212   213   214   215   216   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет