如何创建一个等待布尔值变为真的函数

时间:2017-03-12 20:54:36

标签: python python-3.x

我一直在使用pygame创建游戏,我需要等到#39;为其中的某些东西发挥作用。我知道我可以很容易地做到这一点,只需创建一个while循环,并在每次我需要这个功能时一旦条件变为真,就会破坏,但如果我真的有一个我可以用来做这个的功能会好得多。我在这里写了这个函数,发现它没有用:

def wait_until(condition):
    while True:
        Quit() #These three lines are required to allow for the program to continue running
        pygame.display.update()
        CLOCK.tick(FPS)
        if condition(): break

我认为这是调用函数时的结果,那一刻的条件状态被保存到变量' condition'作为布尔值。因此,如果之后发生变化,它就不会做任何事情。例如:

block = classes.sprite.Sprite(x = 50, y = 50)
wait_until(block.distance_to(pygame.mouse.get_pos()) <= 100)

与将False传递给函数的情况相同,如果鼠标距离超过100像素。

那么我该怎么做才能解决这个问题,它真的让我感到难过,而且我不知道我能做些什么才能创造出能够做我想做的事情。

任何有关此事的帮助都会受到关注

1 个答案:

答案 0 :(得分:3)

wait_until(lambda: block.distance_to(pygame.mouse.get_pos()) <= 100)

这会创建一个可以根据需要多次调用的函数来评估您的状况。