In pygame exists a timer event. Use pygame.time.set_timer()
to repeatedly create a USEREVENT
in the event queue. The time has to be set in milliseconds. e.g.:
timer_interval = 10000 # 10 seconds
timer_event = pygame.USEREVENT + 1
pygame.time.set_timer(timer_event, timer_interval)
Note, in pygame customer events can be defined. Each event needs a unique id. The ids for the user events have to be between pygame.USEREVENT
(24) and pygame.NUMEVENTS
(32). In this case pygame.USEREVENT+1
is the event id for the timer event.
Receive the event in the event loop:
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == timer_event:
# [...]
The timer event can be stopped by passing 0 to the time argument of pygame.time.set_timer
.
Note, you have to use a list to manage the enemies. Add a new enemy position to a list when the event occurs. Iterate through the enemies in a loop. Move and draw the enemies in the loop:
timer_interval = 10000 # 10 seconds
timer_event = pygame.USEREVENT + 1
pygame.time.set_timer(timer_event, timer_interval)
enemy_list = []
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == timer_event:
# [...]
enemy_list.append([enemyX, enemyY])
# [...]
for enemy_pos in enemy_list:
screen.blit(enemy, enemy_pos)