python - 使用 time.time() 和 Keydown 测量时间

标签 python date time pygame

我从名为 sounds 的列表中获取了播放的声音。它播放声音,将播放声音的时间存储在 start 中,等待 6 秒并播放列表中的下一个声音。现在我想通过按键捕获这 6 秒之间的 react 时间。如果条件为真,那么我单击按钮,它会捕获时间并将其存储在 end 中。然后,endstart 之间的差异应该给我结果。问题是,它不能正确测量时间。它总是给我几毫秒的时间,即使我在点击之前要花更长的时间。我想知道我在这里做错了什么?

start = time.time()

    for i in range(len(arr)):
        pygame.mixer.music.load(sounds[i])
        pygame.mixer.music.play()

            for e in pygame.event.get():
                if e.type == pygame.KEYDOWN:
                    if e.key == pygame.K_RIGHT:

                        if condition:
                            end = time.time()
                            diff = end - start

            while pygame.mixer.music.get_busy():
                  time.sleep(6)

最佳答案

我认为最简单的解决方案是在下一个声音开始播放时重置开始时间。

import time
import pygame as pg


pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
SOUND = pg.mixer.Sound('a_sound.wav')

start = time.time()

done = False
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True
        elif event.type == pg.KEYDOWN:
            if event.key == pg.K_RIGHT:
                diff = time.time() - start
                print(diff)

    passed_time = time.time() - start
    pg.display.set_caption(str(passed_time))
    if passed_time > 6:
        start = time.time()  # Reset the start time.
        SOUND.play()

    screen.fill(BG_COLOR)
    pg.display.flip()
    clock.tick(60)

pg.quit()

关于python - 使用 time.time() 和 Keydown 测量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798735/

相关文章:

python - 使用 Datanitro 的交互式工作表

java - 使用预期模式检查日期及其模式

Java:检查给定日期是否在当前月份内

Android - 网络日期/时间

python - 多个进程读取和删除同一目录中的文件

python - 用于捕获重复模式的正则表达式

Java SimpleDateFormat 无法正确解析(我使用正确的大写/小写字母..)

python - “模块”对象没有属性 '_strptime',有多个线程 Python

javascript - 如何使用 HTTP 请求中的参数在 Django 中附加模型

javascript - 新日期无效日期 ("YYYY-MM-DDThh:mm:ss");实例化