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

2024-04-27 15:50:41 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题中所说,我正在处理一个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代表熔岩)


Tags: and函数程序timedefsleeppygamedelay
1条回答
网友
1楼 · 发布于 2024-04-27 15:50:41

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

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()

相关问题 更多 >