Збільшуємо кількість ворогів
Для збільшення кількості ворогів перепишемо блок створення ворогів у вигляді функції create_enemy()
def create_enemy():
enemy_size = (30, 30)
enemy = pygame.Surface(enemy_size)
enemy.fill(COLOR_BLUE)
enemy_rect = pygame.Rect(WIDTH, 100, *enemy_size)
enemy_move = [-1, 0]
return [enemy, enemy_rect, enemy_move]
Події Pygame, створені користувачем, називаються «подіями користувача» або UserEvent.
CREATE_ENEMY = pygame.USEREVENT + 1
У наведеному вище коді ми створюємо UserEvent, який викликається CREATE_ENEMY, призначаючи йому ідентифікатор події. Pygame має загалом 32 слоти подій (ID), з яких перші 23 використовуються Pygame (попередньо визначені події). Ідентифікатори подій від 24 до 32 доступні для нашого використання.
pygame.USEREVENT має значення 24, яке ми можемо призначити визначеній нами події. Щоб створити другу подію, ви зробите pygame.USEREVENT + 1 (для ідентифікатора 25) і так далі.
Створення UserEvent — це лише перший крок. Наступним кроком є початок періодичної трансляції події за допомогою таймерів pygame. Ми будемо використовувати функцію set_timer(), яка прийматиме два параметри: UserEvent і часовий інтервал. UserEvent буде надіслано як сигнал події, який періодично повторюватиметься через вказаний проміжок часу. Простіше кажучи, якщо 1500 мілісекунд є інтервалом часу, сигнал події буде генеруватися кожні 1500 мілісекунд.
pygame.time.set_timer(CREATE_ENEMY, 1500)
Як і зі звичайною подією , у ігровому циклі ми будемо переглядати список подій, pygame.event.get() і шукати подію, яку ми щойно створили. Якщо ця подія знайдена, ми перейдемо до коду, який хочемо виконати.
Спочатку перед головним циклом створимо список, в який будемо зберігати створених ворогів.
enemies = []
Потім добавимо створення ворогів в головний цикл і додавання їх в список.
for event in pygame.event.get():
if event.type == QUIT:
playing = False
if event.type == CREATE_ENEMY:
enemies.append(create_enemy())