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



Pdf көрінісі
бет204/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   200   201   202   203   204   205   206   207   ...   334
Байланысты:
Изучаем Python

УПРАЖНЕНИЯ
13.3. Капли:
найдите изображение дождевой капли и создайте сетку из капель. Капли 
должны постепенно опускаться вниз и исчезать у нижнего края экрана.
13.4. Дождь:
измените свой код в упражнении 13.3, чтобы при исчезновении ряда капель 
у нижнего края экрана новый ряд появлялся у верхнего края и начинал свое падение.
Уничтожение пришельцев
Итак, мы создали корабль и флот пришельцев, но когда снаряды достигают при-
шельцев, они просто проходят насквозь, потому что программа не проверяет кол-
лизии. В игровом программировании 
коллизией
называется перекрытие игровых 
элементов. Чтобы снаряды сбивали пришельцев, метод 
sprite.groupcollide()
используется для выявления коллизий между элементами двух групп.
Выявление коллизий
Когда снаряд попадает в пришельца, программа должна немедленно узнать об этом, 
чтобы сбитый пришелец исчез с экрана. Для этого мы будем проверять коллизии 
сразу же после обновления позиции снаряда.


282
Глава 13 • Осторожно, пришельцы!
Метод 
sprite.groupcollide()
сравнивает прямоугольник 
rect
каждого элемента 
с прямоугольником 
rect
каждого элемента другой группы. В данном случае он 
сравнивает прямоугольник каждого снаряда с прямоугольником каждого при-
шельца и возвращает словарь со снарядами и пришельцами, между которыми 
обнаружены коллизии. Каждый ключ в словаре представляет снаряд, а ассоцииро-
ванное с ним значение — пришельца, в которого попал снаряд. (Этот словарь будет 
использоваться в реализации системы подсчета очков в главе 14.)
Для проверки коллизий в конец функции 
update_bullets()
добавляется следую-
щий код:
alien_invasion.py
def _update_bullets(self):
"""Обновляет позиции снарядов и удаляет старые пули."""
...
# Проверка попаданий в пришельцев.
# При обнаружении попадания удалить снаряд и пришельца.
collisions = pygame.sprite.groupcollide(
self.bullets, self.aliens, True, True)


Достарыңызбен бөлісу:
1   ...   200   201   202   203   204   205   206   207   ...   334




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

    Басты бет