같은 정수 값으로 어떻게 비교할 수 있습니다하십시오. pygame.event.get()
은 0 개 이상의 이벤트가있는 목록 객체를 반환합니다. len()
은 해당 목록에있는 항목 수를 반환합니다. 0과 비교하면 비어 있음 또는 기타 목록에 대해 알려줍니다.
def checkForKeyPress():
#if I retrieve at least one quit event since I last checked
if len(pygame.event.get(QUIT)) > 0:
#quit the game
terminate()
#retrieve all the key release events since we last checked
keyUpEvents = pygame.event.get(KEYUP)
#if there are no key release events
if len(keyUpEvents) == 0:
#there was no key press, don't return anything
#and skip the rest of the method
return None
#if the user pressed the escape key
if keyUpEvents[0].key == K_ESCAPE:
#quit the game
terminate()
#if we haven't returned or quit already
#return the first key released since we last checked
return keyUpEvents[0].key
이 코드에 대해 몇 가지 중요한 문제가 있습니다.
- 이 방법에는 명확한 목적이 하나도 없습니다. 그것은 게임을 종료하고 핵심 릴리스를 반환 담당입니다.
- 프레스 (
KEYDOWN
)를 확인하지는 않지만 릴리스 (KEYUP
)는 부적절한 이름입니다.
- 키가 빨리 감겨지면 일부 주요 이벤트가 건너 뜁니다. 첫 번째 이벤트 만 반환되지만 모든 이벤트가 대기열에서 지워집니다.
- 이것이 이벤트 대기열에서 수행되는 유일한 검사 일 경우, 결국 대기열은 충분한 시간과 키 입력으로 사용 가능한 모든 메모리를 차지합니다.
시간을 좀 더 보내고 어디에서 왔는지를 살펴보면 몇 가지 문제가 발생할 수 있다고 확신합니다. 자신의 게임에서 이벤트를 처리 할 때 카운터 예제로 사용하십시오. 이 종류의 이벤트를 체크 아웃하는 방법은 much better and simpler examples입니다.
더 자세히 설명해주세요. 그것은 파이 게임에 대한 올바른 구문이 아닙니다. – GLHF
사실 파이 게임을 사용하여 만든 게임의 일부입니다. 그러나 어떤 종류의 값 pygame.event가 반환했는지 이해할 수 없었습니다. 이것이 바로 조건 비교에 사용 된 값과 관련하여 다소 혼란 스러웠습니다. – nerd0711