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



Pdf көрінісі
бет180/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   176   177   178   179   180   181   182   183   ...   334
Байланысты:
Изучаем Python


Глава 12 • Инопланетное вторжение
управление событиями отдельно от других аспектов игры (например, обновления 
экрана).
Ниже приведен класс 
AlienInvasion
с новым методом 
_check_events()
, который 
используется только в коде 
run_game()
:
alien_invasion.py
def run_game(self):
"""Запуск основного цикла игры."""
while True:

self._check_events()
# При каждом проходе цикла перерисовывается экран.
...

def _check_events(self):
"""Обрабатывает нажатия клавиш и события мыши."""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
Мы определяем новый метод _
check_events()

и перемещаем строки, которые 
проверяют, не закрыл ли игрок окно щелчком кнопки мыши, в этот новый метод.
Для вызова метода внутри класса используется точечный синтаксис с переменной 
self
и именем метода 

. Затем метод вызывается в цикле 
while
метода 
run_game()
.
Метод _update_screen()
Для дальнейшего упрощения 
run_game()
выделим код обновления экрана в от-
дельный метод _
update_screen()
:
alien_invasion.py
def run_game(self):
"""Запуск основного цикла игры."""
while True:
self._check_events()
self._update_screen()
def _check_events(self):
...
def _update_screen(self):
"""Обновляет изображения на экране и отображает новый экран."""
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
pygame.display.flip()
Код прорисовки фона и переключения экрана перемещен в 
_update_screen()
. Тело 
основного цикла в 
run_game()
серьезно упростилось. С первого взгляда видно, что 
программа отслеживает новые события и обновляет экран при каждом проходе 
цикла.


Управление кораблем
251
Если вы уже написали несколько игр, вероятно, вы с самого начала начнете раз-
бивать свой код на такие методы. Но если вы никогда не брались за подобный про-
ект, вероятно, вы не знаете, как структурировать этот код. Эта последовательность 
дает представление о реальном процессе разработки: сначала вы пишете свой код 
в самом простом виде, а потом подвергаете его рефакторингу по мере роста слож-
ности проекта.
Теперь, когда мы изменили структуру кода и упростили его расширение, можно 
переходить к динамическим аспектам игры.


Достарыңызбен бөлісу:
1   ...   176   177   178   179   180   181   182   183   ...   334




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

    Басты бет