Pygame 每 10 秒新敌人?
Pygame new enemy every 10sec?
抱歉,这个问题可能是重复的,但我已经搜索了很多关于这个主题的内容,但我无能为力。那么我怎样才能每 10 秒将一个新敌人 blit 到屏幕上呢?
顺便说一句,我想使用 USEREVENTS 来实现它,因为我正在学习它们。
我真的遇到这种事件的麻烦,我无法得到它们,这就是我试过的:
a = 10000
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_e:
pygame.time.set_timer(pygame.USEREVENT+1, a)
if a == 0:
screen.blit(enemy, (enemyX, enemyY))
a = 5000
在 pygame 中存在一个定时器事件。在事件队列中使用 pygame.time.set_timer()
to repeatedly create a USEREVENT
。时间必须以毫秒为单位设置。例如:
timer_interval = 10000 # 10 seconds
timer_event = pygame.USEREVENT + 1
pygame.time.set_timer(timer_event, timer_interval)
请注意,在 pygame 中可以定义客户事件。每个事件都需要一个唯一的 ID。用户事件的 ID 必须介于 pygame.USEREVENT
(24) 和 pygame.NUMEVENTS
(32) 之间。在这种情况下,pygame.USEREVENT+1
是定时器事件的事件 ID。
在事件循环中接收事件:
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == timer_event:
# [...]
可以通过将 0 传递给 pygame.time.set_timer
的 time 参数来停止计时器事件。
注意,你必须使用列表来管理敌人。事件发生时将新的敌人位置添加到列表中。循环遍历敌人。在循环中移动并绘制敌人:
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)
抱歉,这个问题可能是重复的,但我已经搜索了很多关于这个主题的内容,但我无能为力。那么我怎样才能每 10 秒将一个新敌人 blit 到屏幕上呢? 顺便说一句,我想使用 USEREVENTS 来实现它,因为我正在学习它们。 我真的遇到这种事件的麻烦,我无法得到它们,这就是我试过的:
a = 10000
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_e:
pygame.time.set_timer(pygame.USEREVENT+1, a)
if a == 0:
screen.blit(enemy, (enemyX, enemyY))
a = 5000
在 pygame 中存在一个定时器事件。在事件队列中使用 pygame.time.set_timer()
to repeatedly create a USEREVENT
。时间必须以毫秒为单位设置。例如:
timer_interval = 10000 # 10 seconds
timer_event = pygame.USEREVENT + 1
pygame.time.set_timer(timer_event, timer_interval)
请注意,在 pygame 中可以定义客户事件。每个事件都需要一个唯一的 ID。用户事件的 ID 必须介于 pygame.USEREVENT
(24) 和 pygame.NUMEVENTS
(32) 之间。在这种情况下,pygame.USEREVENT+1
是定时器事件的事件 ID。
在事件循环中接收事件:
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == timer_event:
# [...]
可以通过将 0 传递给 pygame.time.set_timer
的 time 参数来停止计时器事件。
注意,你必须使用列表来管理敌人。事件发生时将新的敌人位置添加到列表中。循环遍历敌人。在循环中移动并绘制敌人:
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)