在Python 3.7.0中在后台运行的计时器

时间:2018-12-15 01:29:42

标签: python-3.x timer python-multithreading

我正在尝试在基于文本的冒险游戏中设置一个计时器,以便每过一秒钟,用户就会离开1 hp, 在特定情况下 >和仍然可以使用其他功能。这是我的代码:

#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 :(得分:0)

您必须调用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