pygame key event

아래는 내가 게임을 만들 때 사용한 코드이다.

def keyEvent():
    global score
    for event in pygame.event.get():  
        if event.type == pygame.KEYDOWN:  
            if event.key == pygame.K_ESCAPE:
                pygame.quit()
            elif event.key == pygame.K_LEFT:
                move.x = -1		#move는 앞서 선언한 변수#(너비, 높이, x좌표, y좌표)
            elif event.key == pygame.K_RIGHT:
                move.x = 1
            elif event.key == pygame.K_UP:
                move.y = -1
            elif event.key == pygame.K_DOWN:
                move.y = 1
                
         elif event.type == pygame.KEYUP:           
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                move.x = 0
            elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                move.y = 0

앞에 pygame에서 소개 했듯이 for event in pygame.event.get(): 을 써서 사용자가 발생시킨 이벤트를 가져와 for문을 돌리게 된다.

for문의 하위 if문을 돌면서 가져온 event에 대한 점검을 하게 된다.

가져온 이벤트 중 하나를 event라는 변수라고 생각하고, 해당 event의 type을 검사한다.

  • pygame.KEYDOWN

    KEYDOWN은 말 그대로 키보드를 누르는 event이다.

  • pygame.KEYUP

    KEYUP은 누른 키보드를 떼었을 때의 event이다.

  • if event.key == pygame.K_ESCAPE

    누른 키가 escape(esc)인지 확인하는 라인이다.

  • pygame.quit()

    quit값은 pygame이 종료되는 이벤트이다.

  • pygame.K_LEFT

    왼쪽 방향키(오른쪽,위,아래 방향키도 설정 가능하다.)

move 변수는 내가 직접 선언한 (너비,높이,x좌표, y좌표)가 들어가 있는 변수이다. 따라서 K_LEFT일 때 player는 x좌표로 -1(왼쪽)을 움직이게 된다.

  • if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:

    event.type이 KEYUP일 때 점검을 하는 라인이다. 만약 손을 뗀 키보드가 K_LEFT or K_RIGHT이라면 move.x = 0 을 통해 현재 x좌표에서 멈추게 되는 것이다.

    K_UP, K_DOWN일 때는 move.y = 0이 된다.