Измерьте время с помощью time.time () и Keydown - PullRequest
0 голосов
/ 16 декабря 2018

Я получил звуки, которые я играю, из списка под названием sounds.Он воспроизводит звук, сохраняет время воспроизведения звука в start, ждет 6 секунд и воспроизводит следующий звук из списка.Теперь я хочу зафиксировать время реакции между этими 6 секундами с помощью нажатия клавиши.Если условие истинно, я нажимаю кнопку, и она фиксирует время и сохраняет его в end.Тогда разница между end и start должна дать мне результат.Проблема в том, что он не измеряет время правильно.Это всегда дает мне миллисекунды, даже если я нажимаю дольше.Интересно, что я тут не так делаю?

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)

1 Ответ

0 голосов
/ 16 декабря 2018

Я думаю, что самым простым решением было бы сбросить время начала, когда начинает воспроизводиться следующий звук.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...