Как сделать таймер в Python, не замораживая весь код - PullRequest
1 голос
/ 06 апреля 2019

Я кодирую Марио, используя Pygame, и я кодирую блоки прямо сейчас. Я хочу сделать таймер, чтобы, когда я нажимаю на блок через секунду, блок возвращается в исходное положение для создания анимации удара. Проблема заключается в том, что при таймере сна он замораживает всю игру на время таймера. Мне нужен код для запуска и через секунду этот предыдущий блок кода для включения.

Я пытался использовать сон, чтобы сделать таймер, но он зависает всю игру. Кто-нибудь может дать мне немного знаний? Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 апреля 2019

Я бы посоветовал вам использовать модуль threading и выполнять две функции.

В конце вы можете отформатировать так:

from threading import Thread
if __name__ == '__main__':
    Thread(target = game()).start()
    Thread(target = timer()).start()

Другой вариант - модуль timeit . Вы можете установить таймер и проверить, когда определенное время достигнуто с помощью оператора if / while.

Третий вариант - модуль времени, который вы использовали для сна:

import time

max_time = #the time you want
start_time = time.time()
while (time.time() - start_time) < max_time:
    game()
1 голос
/ 06 апреля 2019
from threading import Timer

def timeout():
    # do your stuff here

t = Timer(number_of_seconds, timeout)
t.start()
...