gpt4 book ai didi

python - pygame.time.set_timer() 事件重置?

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:27 25 4
gpt4 key购买 nike

我有一个小问题...

pygame.time.set_timer() 是否有某种重置?

我已经让它运行正常,但问题是我需要在执行特定操作时将计时器重置回 0。由于它现在正在运行,计时器将每秒触发一次 movedownauto 事件(无论发生什么),但我想要它做的是在按下某个键时重置,以便它等待一秒钟按下键后触发 movedownauto 事件。如果可以将某些内容放入 if event.type == USEREVENT: 部分,那就太理想了。

下面的例子↓

pygame.time.set_timer(USEREVENT, 1000)

while True:

for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True

elif event.type == pygame.KEYDOWN:
# Figure out if it was an arrow key. If so
# adjust speed.
if event.key == pygame.K_LEFT:
x_speed = -40
elif event.key == pygame.K_RIGHT:
x_speed = 40
elif event.key == pygame.K_DOWN:
y_speed = 40

# User let up on a key
elif event.type == pygame.KEYUP:
# If it is an arrow key, reset vector back to zero
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_speed = 0
elif event.key == event.key == pygame.K_DOWN:
y_speed = 0
# Move the object according to the speed vector.
x_coord += x_speed
y_coord += y_speed

if event.type == USEREVENT:
movedownauto(screen, x_coord, y_coord)
else:
drawcharacter(screen, x_coord, y_coord)



clock.tick(tickspeed)
pygame.display.flip()

谢谢!

最佳答案

如果您只想在按键后触发一次 USEREVENT,请从顶部删除 pygame.time.set_timer(USEREVENT, 1000) 行并添加 pygame.time.set_timer(USEREVENT, 1000, True)elif event.type == pygame.KEYDOWN: block 中。

如果你将pygame.time.set_timer的第三个参数设置为True,事件只会被添加到事件队列一次(注意这个特性只在 pygame 版本 2 中可用)

如果您希望 USEREVENT 定期发生并且在 KEYDOWN 发生时“重置”计时器,只需删除计时器并重新添加它。

elif event.type == pygame.KEYDOWN:
pygame.time.set_timer(USEREVENT, 0)
pygame.time.set_timer(USEREVENT, 1000)
...

关于python - pygame.time.set_timer() 事件重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58968714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com