如何在不停止或冻结整个程序的情况下延迟功能?

时间:2019-01-20 11:39:56

标签: python pygame

正如标题中所述,我正在一个pygame项目上,我想延迟一下,但是提供的所有功能都是pygame.time.delay()pygame.time.wait()sleep()以及所有那三个在调用时会阻塞整个程序。

更清楚地说,我希望角色站在熔岩上时每秒受到伤害,同时有权逃离它。但是,当功能消失时,程序显得过分膨胀,直到他死后我什么也做不了。

def delay(y):
    starttime = time.time()
    while True:
        time.sleep (y - ((time.time() - starttime) % y))

def hurt(x):
    global Life
    pygame.mixer.Sound.play (Aie)
    Life -= x

if tilemap[PlayerPos[1]][PlayerPos[0]] == 4 and Life != 0:
    while tilemap[PlayerPos[1]][PlayerPos[0]] == 4 and Life != 0:
        delay(1)
        hurt(1)
        death()

(4代表LAVA)

1 个答案:

答案 0 :(得分:0)

您可以设置一个包含当前时间的条件,而不是使用延迟,例如

if time.time()%1==0 and tilemap[PlayerPos[1]][PlayerPos[0]] == 4 and Life != 0:
        while tilemap[PlayerPos[1]][PlayerPos[0]] == 4 and Life != 0:
            hurt(1)
            death()