Таймер, который работает в фоновом режиме в Python 3.7.0 - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь сделать таймер в моих текстовых приключенческих играх так, чтобы за каждую проходящую секунду у пользователя отнималось 1 л.с., , а - в определенном сценарии и все еще может использовать другие функции.Вот мой код:

#Imports and base variables
import time
import threading
import random

hp=100 #Health

p="snow" #Starting point

invtry=[] #Inventory of Character

#Function to drop health
def hlthdrp():
    hp-1
t=threading.Timer(1.0,hlthdrp)
t.start()
while p=="snow" or p=="Snow":
        if hp==0 and p=="snow" or p=="Snow":
            print ("You died of frostbite")
            t.cancel()
            threading.wait(timeout=5.0)

На данный момент я не получаю никаких ошибок, а вместо этого совершенно пустую оболочку или терминал.Если бы кто-нибудь мог помочь, это было бы здорово!

1 Ответ

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

Вы должны вызывать threading.Timer рекурсивно, иначе он вызывается только один раз

И вы можете использовать функцию lower () для сравнения снега или какой-либо строки

Есть ваш фиксированный код, я надеюсь, этобудет полезно для вас.

def hlthdrp():
    global hp
    print(hp)# just for testing 
    hp=hp-1
    if hp!=0:
        threading.Timer(1, hlthdrp).start()

hlthdrp()
while p.lower()=="snow":
        if hp==0 :
            print ("You died of frostbite")
        elif hp!=0 :
            pass
...