gpt4 book ai didi

python - PyGame:每次移动鼠标时计时器都会重置

转载 作者:行者123 更新时间:2023-12-01 06:47:27 25 4
gpt4 key购买 nike

我目前正在编写一个需要计时器的游戏。我编写了一些似乎有效的代码,因为它以秒为单位向上计数,但是当我移动鼠标时,计时器重置为零并再次开始计数。显然,这不是我想要发生的事情,我尝试找出为什么会发生这种情况,而不是连续计数,但我无法解决它。

我的代码是:

passed_time = 0
timer_started = False

(^在 while 循环之外)

(/while 循环内)

    for event in ev:
if event.type == pygame.QUIT:
is_alive = False
if start_clicked:
timer_started = True
if timer_started:
start_time = pygame.time.get_ticks()
if won:
timer_started = False
if timer_started:
passed_time = pygame.time.get_ticks() - start_time
text = font.render(str(passed_time / 1000), True, font_color)
screen.blit(text, (20, 450))

以及当单击相应颜色时将 [start_clicked] 或 [won] 设置为 True 的鼠标事件。

根据我对 PyGame 中计时器的基本了解,一旦 start_clicked 设置为 true,它应该会继续计数,但是每次移动鼠标时它都会重置,这完全违背了计时器的意义基于鼠标移动的回避游戏。我该如何解决这个问题并使其连续运行,直到 won 变量为 true?

如果出于某种原因我没有包含足够的内容来解决问题,the full code is here:

最佳答案

通过查看完整代码,您的事件循环是错误的,因为您的身份已关闭。

目前,您在事件循环中有 if event.type == pygame.QUIT: ,而所有其他 if event.type == another 都在事件循环之外,因为它们缩进不够。

所有检查事件的 if 都必须在事件循环内,而 if 与事件循环无关(如 if start_clicked:) 必须位于事件循环之外,通常位于事件循环之后。

我无法修复您的所有代码,但修复事件循环肯定会有所帮助。

关于python - PyGame:每次移动鼠标时计时器都会重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59165977/

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