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

标签 python timer pygame reset mousemove

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

我的代码是:

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/

相关文章:

python - Plotly hoverinfo 显示所有数据点而不是当前点

python - 如何将列表的字符串表示形式转换为列表

python - 在python中查找正则表达式类型

react-native - React Native 音频无法按时播放

python - 用 pygame.midi 演奏音符

python - Sprite 在一定距离限制内遵循另一种灵活的方式

python - Google Python API 尝试导入已弃用的 oauth2client.contrib.multistore_file

c# 事件处理程序被添加两次

php - 如何从javascript调用表单提交?

python - 通过代码执行python文件