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



Pdf көрінісі
бет218/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   214   215   216   217   218   219   220   221   ...   334
Байланысты:
Изучаем Python

alien_invasion.py
def _check_events(self):
"""Обрабатывает нажатия клавиш и события мыши."""
for event in pygame.event.get():
if event.type == pygame.QUIT:
...

elif event.type == pygame.MOUSEBUTTONDOWN:

mouse_pos = pygame.mouse.get_pos()

self._check_play_button(mouse_pos)
Pygame обнаруживает событие 
MOUSEBUTTONDOWN
, когда игрок щелкает в любой точке 
экрана 

, но мы хотим ограничить игру, чтобы она реагировала только на щелчки 
на кнопке 
Play
. Для этого будет использоваться метод 
pygame.mouse.get_pos()

возвращающий кортеж с координатами 
x
и 
y
точки щелчка 

. Эти значения пере-
даются новому методу 
_check_play_button()

.
Ниже приведен код 
_check_play_button()
, который я решил разместить после 
_check_events()
:
alien_invasion.py
def _check_play_button(self, mouse_pos):
"""Запускает новую игру при нажатии кнопки Play."""

if self.play_button.rect.collidepoint(mouse_pos):
self.stats.game_active = True
Метод 
collidepoint()
используется для проверки того, находится ли точка щелчка 
в пределах области, определяемой прямоугольником кнопки Play 

. Если точка 
находится в пределах кнопки, флаг 
game_active
переводится в состояние 
True
и игра начинается!
К этому моменту вы сможете запустить и сыграть полноценную игру. После за-
вершения игры значение 
game_active
становится равным 
False
, а кнопка 
Play
снова 
появится на экране.
Сброс игры
Только что написанный нами код работает при первом нажатии кнопки 
Play
, но не 
работает после завершения первой игры, потому что условия, приводящие к окон-
чанию игры, еще не были сброшены.
Чтобы игра сбрасывалась при каждом нажатии кнопки 
Play
, необходимо сбросить 
игровую статистику, стереть старых пришельцев и снаряды, построить новый флот 
и вернуть корабль в центр нижней стороны:


Достарыңызбен бөлісу:
1   ...   214   215   216   217   218   219   220   221   ...   334




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

    Басты бет