微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame:低 fps 导致难以检测事件

如何解决pygame:低 fps 导致难以检测事件

我正在做一个 pygame 项目,它应该只有 4 fps,这使得它每 0.25 秒一帧。我的问题是,当您短暂单击某个键时,可能无法检测到该事件,因为该程序不会在整个 0.25 秒内检查事件,而是每 0.25 秒检查一次,这使得它很容易错过某个事件. pygame有没有办法解决这个问题? (我使用clock.tick() 来设置fps)

解决方法

我无法针对您的特定情况提供解决方案,因为您没有向我们展示您的代码。不过

我的问题是,当您短暂单击某个键时,可能无法检测到该事件

不,那不是真的。检测到所有事件。 pygame.event.get() 返回自上次调用此函数以来发生的所有事件。见How to get keyboard input in pygame?
您的游戏逻辑可能是错误的,您在 KEYDOWN 事件发生时设置了状态,但在 KEYUP 事件发生时停止。这将导致行为。

甚至可以比应用程序循环更频繁地运行事件循环。 以更高的帧速率运行应用程序循环和事件循环,但仅以 4 FPS 运行游戏。例如,以 40 FPS 的速度运行应用程序循环。使用帧计数器并在计数器达到 10 时运行游戏:

clock = pygame.time.Clock()
frame_count = 0
run = True
while run:

    clock.tick(40)
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    frame_count = (frame_count +1) % 10
    if frame_count == 0:

        # run game and do drawing
        # [...]

        pygame.display.flip()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。