Книга «Изучаем Python»



Pdf көрінісі
бет154/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   150   151   152   153   154   155   156   157   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

ПРИМЕЧАНИЕ
Если группа будет создаваться в цикле, в результате программа создает тысячи групп, и скорость 
игры упадет до минимума . Если ваша игра со временем начинает заметно «тормозить», вниматель-
но проверьте, что происходит в основном цикле while .
Объект 
bullets
передается методам 
check_events()
и 
update_screen()
. В 
check_
events()
он используется при обработке клавиши «пробел», а в 
update_screen()
необходимо перерисовать выводимые на экран пули.
Вызов 
update()
для группы 

приводит к автоматическому вызову 
update()
для 
каждого спрайта в группе. Строка 
bullets.update()
вызывает 
bullet.update()
для 
каждой пули, включенной в группу 
bullets
.
Обработка выстрелов
В файле 
game_functions .py
необходимо внести изменения в метод 
check_keydown_
events()
, чтобы при нажатии клавиши «пробел» происходил выстрел. Изменять 
check_keyup_events()
не нужно, потому что при отпускании клавиши ничего 
не происходит. Также необходимо изменить 
update_screen()
и вывести каждую 
пулю на экран перед вызовом 
flip()
. Ниже представлены соответствующие 
изменения в 
game_functions .py
:
game_functions.py
...
from bullet import Bullet
 
def check_keydown_events(event, ai_settings, screen, ship, bullets):
...
 
elif event.key == pygame.K_SPACE:
# Создание новой пули и включение ее в группу bullets.
new_bullet = Bullet(ai_settings, screen, ship)
bullets.add(new_bullet)
...
 
def check_events(ai_settings, screen, ship, bullets):
"""Обрабатывает нажатия клавиш и события мыши."""
for event in pygame.event.get():
...
elif event.type == pygame.KEYDOWN:
check_keydown_events(event, ai_settings, screen, ship, bullets)
...
 
def update_screen(ai_settings, screen, ship, bullets):
...
# Все пули выводятся позади изображений корабля и пришельцев.
 
for bullet in bullets.sprites():
bullet.draw_bullet()
ship.blitme()
...




Достарыңызбен бөлісу:
1   ...   150   151   152   153   154   155   156   157   ...   266




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

    Басты бет