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



Pdf көрінісі
бет194/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   190   191   192   193   194   195   196   197   ...   334
Байланысты:
Изучаем Python

alien_invasion.py
while True:
self._check_events()
self.ship.update()
self._update_bullets()
self._update_screen()
В результате преобразования основной цикл содержит минимум кода, чтобы можно 
было легко прочитать имена функций и понять, что происходит в игре. Основной 
цикл проверяет ввод, полученный от игрока, а затем обновляет позицию корабля 


Итоги
267
и всех выпущенных снарядов. Затем обновленные позиции игровых элементов 
используются для вывода нового экрана в точке.
Снова запустите 
alien_invasion .py
и убедитесь в том, что стрельба происходит без 
ошибок.
УПРАЖНЕНИЯ
12.6. Боковая стрельба:
напишите игру, в которой корабль размещается у левого края 
экрана, а игрок может перемещать корабль вверх и вниз. При нажатии клавиши «пробел» 
корабль стреляет и снаряд двигается вправо по экрану. Проследите за тем, чтобы снаряды 
удалялись при выходе за край экрана.
Итоги
В этой главе вы научились планировать ход игры, а также усвоили базовую струк-
туру игры, написанной с использованием Pygame. Вы узнали, как задать цвет фона 
и как сохранить настройки в отдельном классе, чтобы они были доступны для всех 
частей игры. Вы научились выводить изображения на экран и управлять перемеще-
нием игровых элементов. Также вы узнали, как создавать элементы, двигающиеся 
самостоятельно (например, снаряды, летящие по экрану), и как удалять объекты, 
которые стали лишними. Также в этой главе рассматривалась методика регуляр-
ного рефакторинга кода для упрощения текущей разработки.
В главе 13 в игру Alien Invasion будут добавлены пришельцы. К концу главы 13 
игрок сможет сбивать корабли пришельцев — конечно, если они не доберутся до 
него первыми!


13
Осторожно, пришельцы!
В этой главе в игру Alien Invasion будут добавлены пришельцы. Сначала мы до-
бавим одного пришельца у верхнего края экрана, а потом сгенерируем целый флот. 
Пришельцы будут перемещаться в сторону и вниз; при этом пришельцы, в которых 
попадают снаряды, исчезают с экрана. Наконец, мы ограничим количество кора-
блей у игрока, так что при гибели последнего корабля игра завершается.
В этой главе вы узнаете больше о Pygame и о ведении крупного проекта. Вы 
также научитесь обнаруживать 
коллизии
(столкновения) игровых объектов, на-
пример снарядов и пришельцев. Обнаружение коллизий помогает определять 
взаимодействия между элементами игры: например, ограничить перемещение 
персонажа областью между стенами лабиринта или организовать передачу мяча 
между двумя персонажами. Работа будет продолжаться на основе плана, к кото-
рому мы будем время от времени возвращаться, чтобы не отклоняться от цели 
во время написания кода.
Прежде чем браться за новый код для добавления флота пришельцев на экран, 
рассмотрим проект и обновим план.
Анализ проекта
Приступая к новой фазе разработки крупного проекта, всегда полезно вернуться 
к исходному плану и уточнить, чего же вы хотите добиться в том коде, который 
собираетесь написать. В этой главе мы:
‰
‰
проанализируем код и определим, нужно ли провести рефакторинг перед реа-
лизацией новых возможностей;
‰
‰
добавим в левом верхнем углу экрана одного пришельца, отделив его от краев 
экрана интервалами;
‰
‰
по величине интервалов вокруг первого пришельца и общим размерам экрана 
вычислим, сколько пришельцев поместится на экране. Для создания пришель-
цев, заполняющих верхнюю часть экрана, будет написан цикл;
‰
‰
организуем перемещение флота пришельцев в сторону и вниз, пока весь флот 
не будет уничтожен, или пока пришелец не столкнется с кораблем игрока, или 


Создание пришельца
269
пока пришелец не достигнет земли. Если весь флот будет уничтожен, програм-
ма создает новый флот. Если пришелец сталкивается с кораблем или с землей, 
программа уничтожает корабль и создает новый флот;
‰
‰
ограничим количество кораблей, которые могут использоваться игроком, и за-
вершаем игру в конце последней попытки.
Этот план будет уточняться по мере реализации новых возможностей, но для на-
чала и этого достаточно.
Также проводите анализ кода, когда вы начинаете работу над новой серией воз-
можностей проекта. Так как с каждой новой фазой проект обычно становится 
более сложным, лучше всего заняться расчисткой излишне громоздкого или не-
эффективного кода. Ранее мы уже проводили рефакторинг, так что сейчас особой 
расчистки не потребуется.
Создание пришельца
Размещение одного пришельца на экране мало чем отличается от размещения 
корабля. Поведением каждого пришельца будет управлять класс с именем 
Alien

который по своей структуре очень похож на класс 
Ship
. Для простоты мы снова 
воспользуемся готовыми графическими изображениями. Вы можете найти соб-
ственное изображение пришельца или использовать изображение на рис. 13.1, 
доступное в ресурсах книги по адресу 
https://www .nostarch .com/pythoncrashcourse2e/

Это изображение имеет серый фон, совпадающий с цветом фона экрана. Не забудь-
те сохранить выбранный файл в каталоге 
images
.


Достарыңызбен бөлісу:
1   ...   190   191   192   193   194   195   196   197   ...   334




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

    Басты бет