Как отслеживать, на сколько секунд я продвинулся вперед в игре без использования time.sleep?

#python

#python

Вопрос:

 def pathing(shape,size):
target = pyautogui.locateOnScreen(os.path.expanduser(r'~Desktopwow botreferencestarget.png'),
                                  region=(0, 0, 1024, 768), confidence=.7)
target2 = pyautogui.locateOnScreen(os.path.expanduser(r'~Desktopwow botreferencestarget2.png'),
                                   region=(0, 0, 1024, 768), confidence=.7)
target3 = pyautogui.locateOnScreen(os.path.expanduser(r'~Desktopwow botreferencestarget3.png'),
                                   region=(0, 0, 1024, 768), confidence=.7)
distance_moved=[]
seconds_moved=0
if shape=='triangle':
    if target is None and target2 is None and target3 is None:
        pyautogui.keyDown("w")
        distance_moved.append(seconds_moved 1)
        seconds_moved =1
  

У меня есть приведенный выше код для отслеживания перемещений секунд и добавления его в список distance_moved[] . Однако проблема в том, что это не добавляет 1 к секундам, перемещаемым каждые 1 секунду. Возможно ли заставить его добавлять 1 через каждую секунду, но без использования time.sleep ?

Спасибо за любые ответы!

Ответ №1:

Вы можете использовать time.time пример:

 import time 
start = time.time()
while True:
    now = time.time()
    print(f"{now - start} second(s) have passed")
  

Итак, в вашем случае:

 if now - start > 1:
    distance_moved.append(seconds_moved 1)
  

Если вы хотите, чтобы это продолжалось каждую секунду, вы можете сбросить таймер следующим образом:

 if now - start > 1:
    distance_moved.append(seconds_moved 1)
    start = now
  

Комментарии:

1. Привет! Спасибо! time.time возвращает ошибку; ‘ TypeError: аргумент float() должен быть строкой или числом, а не ‘builtin_function_or_method’ ‘. Однако time.monotonic работал отлично. Должно быть нормально заменить time.time на time.monotonic, верно? Еще раз спасибо!! А затем, чтобы подсчитать, сколько секунд прошло в итоге, я могу просто использовать len(distance_moved) и len = seconds moved?

2. Ошибка звучит так, как будто вы сделали time.time в отличие от time.time() . Вы забыли скобку.

3. О! извините!!! вы правы, я сделал time.time вместо time.time(). Со скобками это сработало, еще раз спасибо!