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



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

alien_invasion.py
def _update_aliens(self):
...
if pygame.sprite.spritecollideany(self.ship, self.aliens):
self._ship_hit()
Новый метод 
center_ship()
добавляется в конец файла 
ship .py
:
def center_ship(self):
"""Размещает корабль в центре нижней стороны."""
self.rect.midbottom = self.screen_rect.midbottom
self.x = float(self.rect.x)
Выравнивание корабля по центру выполняется так же, как и в 
__init__()
. После 
выравнивания сбрасывается атрибут 
self.x
, чтобы в программе отслеживалась 
точная позиция корабля.
ПРИМЕЧАНИЕ
Обратите внимание: программа никогда не создает более одного ко-
рабля . Один экземпляр 
ship
используется на протяжении всей игры, а при столкно-
вении с пришельцем он просто возвращается к центру экрана . О том, что у игрока не 
осталось ни одного корабля, программа узнает из атрибута 
ships_left
.
Запустите игру, подбейте нескольких пришельцев, а затем позвольте пришельцу 
столкнуться с кораблем. Происходит небольшая пауза, на экране появляется новый 
флот вторжения, а корабль возвращается в центр нижней части экрана.
Достижение нижнего края экрана
Если пришелец добирается до нижнего края экрана, программа будет реагировать 
так же, как при столкновении с кораблем. Добавьте для проверки этого условия 
новый метод в 
alien_invasion .py
:
alien_invasion.py
def _check_aliens_bottom(self):
"""Проверяет, добрались ли пришельцы до нижнего края экрана."""
screen_rect = self.screen.get_rect()
for alien in self.aliens.sprites():

if alien.rect.bottom >= screen_rect.bottom:
# Происходит то же, что при столкновении с кораблем.
self._ship_hit()
break


290

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




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

    Басты бет