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



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

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

self.ship.moving_right = True

elif event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
self.ship.moving_right = False
В точке 

изменяется реакция игры при нажатии клавиши 

; вместо непосред-
ственного изменения позиции корабля программа просто присваивает 
moving_right
значение 
True
. В точке 

добавляется новый блок 
elif
, реагирующий на события 
KEYUP
. Когда игрок отпускает клавишу 

(
K_RIGHT
), 
moving_right
присваивается 
значение 
False
.
Остается изменить цикл 
while
в 
alien_invasion .py
, чтобы при каждом проходе цикла 
вызывался метод 
update()
корабля:
alien_invasion.py
def run_game(self):
# Запуск основного цикла игры.
while True:
self._check_events()
self.ship.update()
self._update_screen()
Позиция корабля будет обновляться после проверки событий клавиатуры, но 
перед обновлением экрана. Таким образом, позиция корабля обновляется в от-
вет на действия пользователя и будет использоваться при перерисовке корабля 
на экране.
Если запустить 
alien_invasion .py
и удерживать клавишу 

, корабль непрерывно 
двигается вправо, пока клавиша не будет отпущена.
Перемещение влево и вправо
Теперь, когда мы реализовали непрерывное движение вправо, добавить движение 
влево относительно несложно. Для этого нужно снова изменить класс 
Ship
и метод 


254

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




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

    Басты бет