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



Pdf көрінісі
бет131/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   127   128   129   130   131   132   133   134   ...   238
Байланысты:
2 5343781172763690906

ПРИМЕЧАНИЕ

Если группа будет создаваться в цикле, в результате программа создает тысячи групп, и скорость 

игры упадет до минимума . Если ваша игра со временем начинает заметно «тормозить», вниматель-

но проверьте, что происходит в основном цикле 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   ...   127   128   129   130   131   132   133   134   ...   238




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

    Басты бет