我有一个pygame事件(称为bubble_spawn_event),它的间隔(称为bubble_spawn_interval)为1000。我如何使时间间隔减少,比如说每10秒减少0.1秒?
我尝试创建一个间隔(bubble_interval_change_interval)为10秒的单独事件(名为bubble_interval_change_event),当该事件发生时,将bubble_spawn_interval减少0.1秒,然后对同一事件调用pygame.time.set_timer()。(bubble_spawn_event)
我已经定义了气泡衍生事件和间隔,如下所示:
bubble_spawn_event = USEREVENT
bubble_spawn_interval = 1000
pygame.time.set_timer(bubble_spawn_event, bubble_spawn_interval)间隔更改事件和间隔定义如下:
bubble_interval_change_event = USEREVENT + 1
bubble_interval_change_interval = 10000我尝试更改气泡繁殖间隔:
elif event.type == bubble_interval_change_event:
bubble_spawn_interval -= 200
pygame.time.set_timer(bubble_spawn_event, bubble_spawn_interval)我的完整主循环:
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
elif event.type == bubble_spawn_event:
bubbles.add(Bubble(screen, random.randint(100, screen.get_width() - 100), screen.get_height()))
elif event.type == bubble_interval_change_event:
pygame.time.set_timer(bubble_spawn_event, 0)
bubble_spawn_interval -= 200
pygame.time.set_timer(bubble_spawn_event, bubble_spawn_interval)
screen.blit(bg_image, (0, 0))
bubbles.update()
for bubble in bubbles:
bubble.screen.blit(bubble.image, bubble.rect)
bubble.move()
pygame.display.update()
clock.tick(60)
pygame.quit()问题是,气泡产生间隔根本不会下降,即使我将间隔减少了0.9秒。
发布于 2021-08-16 22:27:35
您显然没有重置计时器:
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((700, 400))
spawn_bubble = pygame.USEREVENT
spawn_bubble_timer = 1000
pygame.time.set_timer(spawn_bubble, spawn_bubble_timer)
reduce_timer = spawn_bubble + 1
reduce_timer_timer = 5000
pygame.time.set_timer(reduce_timer, reduce_timer_timer)
run = True
while run:
pygame.time.Clock().tick(10)
screen.fill((0, 0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == spawn_bubble:
pygame.draw.circle(screen, (255, 0, 0),
(random.randint(0, 700), random.randint(0, 400)), 5)
if event.type == reduce_timer:
pygame.time.set_timer(spawn_bubble, 0)
spawn_bubble_timer -= 200
if spawn_bubble_timer <= 0:
spawn_bubble_timer = 200
pygame.time.set_timer(spawn_bubble, spawn_bubble_timer)
pygame.display.update()
pygame.quit()注意pygame.time.set_timer(spawn_bubble, 0)行,它从该事件中删除计时器。如果您运行此代码,您将看到随着时间的推移,这些点开始越来越快地出现。(上限为200毫秒,这样它就不会取消自身或进入负值,实际上当上限也可以取消reduce_timer事件调度时)
附言:这是我第一次使用.set_timer()方法
https://stackoverflow.com/questions/68809315
复制相似问题