2017-03-12 1 views
1

저는 파이 게임을 사용하여 게임을 만들었고, 그 안에 뭔가가 작동 할 때까지 기다릴 필요가 있습니다. 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 

내가이 함수를 호출 할 때, 그 순간의 조건의 상태가 변수 '조건'에 저장됩니다의 결과로 생각 부울로. 그 이후로 바뀌면 아무 것도하지 않을 것입니다. 예를 들어 :

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

은 마우스가 더 이상 100 개 픽셀 떠나있는 경우 함수에 False를 전달하는 것과 같은 것입니다.

이 문제를 해결하기 위해 내가 할 수있는 일은 정말로 저를 곤란하게 만들었고, 내가하고 싶은 것을하는 함수를 만들기 위해 무엇을 할 수 있는지 잘 모릅니다. 이 문제에

어떤 도움이 당신의 상태를 평가하기 위해 필요한만큼 여러 번 호출 할 수있는 기능을 생성

답변

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

appriciated 될 것이다.

+0

감사합니다. 문제가 해결되었습니다. 나는 결코 전에 람다를 사용하지 않았다. 그래서 나는 알지 못했다. –

+1

@GeorgeWillcox이 동작은 람다와 관련이 없다는 것에 주목하자. 함수에 조건을 등가 적으로 쓰고 함수 이름을'wait_until (. ..)'. 어떤 접근법이 효과적인지는 일단 조건을 평가하고 결과를 전달하는 것과는 대조적으로 나중에 함수로 평가할 조건을 포함하기 때문입니다. –

관련 문제