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



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

alien_invasion.py
def _check_play_button(self,mouse_pos):
"""Запускает новую игру при нажатии кнопки Play."""
if self.play_button.rect.collidepoint(mouse_pos):
# Сброс игровой статистики.


298
Глава 14 • Ведение счета

self.stats.reset_stats()
self.stats.game_active = True
# Очистка списков пришельцев и снарядов.

self.aliens.empty()
self.bullets.empty()
# Создание нового флота и размещение корабля в центре.

self._create_fleet()
self.ship.center_ship()
В точке 

обновляется игровая статистика, вследствие чего игрок получает три 
новых корабля. После этого флаг 
game_active
переводится в состояние 
True
(чтобы 
игра началась сразу же после выполнения кода функции), группы 
aliens
и 
bullets
очищаются 

, создается новый флот, а корабль выравнивается по центру 

.
После этих изменений игра будет правильно переходить в исходное состояние при 
каждом нажатии 
Play
, и вы сможете сыграть столько раз, сколько вам захочется!
Блокировка кнопки Play
У кнопки 
Play
в нашем приложении есть одна проблема: область кнопки на экране 
продолжает реагировать на щелчки, даже если кнопка 
Play
не отображается. Если 
случайно щелкнуть на месте кнопки 
Play
после начала игры, то игра перезапустится!
Чтобы исправить этот недостаток, следует запускать игру только в том случае, если 
флаг 
game_active
находится в состоянии 
False
:
alien_invasion.py
def _check_play_button(self, mouse_pos):
"""Запускает новую игру при нажатии кнопки Play."""

button_clicked = self.play_button.rect.collidepoint(mouse_pos)

if button_clicked and not self.stats.game_active:
# Сброс игровой статистики.
self.stats.reset_stats()
...
Флаг 
button_clicked
содержит значение 
True
или 
False

, а игра перезапускается 
только в том случае, если пользователь нажал кнопку 
Play
и 
при этом
игра неактив-
на в настоящий момент 

. Чтобы протестировать это поведение, запустите новую 
игру и многократно щелкайте в том месте, где должна находиться кнопка 
Play
. Если 
все работает так, как положено, нажатия кнопки 
Play
не должны влиять на ход игры.
Сокрытие указателя мыши
Указатель мыши должен быть видимым, чтобы пользователь мог начать игру, но 
после начала игры он только мешает. Чтобы исправить этот недостаток, мы скроем 
указатель мыши после того, как игра станет активной. Это можно сделать в блоке 
if
в конце 
_check_play_button()
:


Повышение сложности


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




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

    Басты бет