Python/pygame

파이썬으로 게임 만들기(Pygame) - 3. 이벤트 처리

wtc 2024. 6. 10. 11:55

유저들의 입력받기

Event란 유저들에게 입력을 받는 것이다.

 

유저가 키보드를 누르거나, 누르다가 떼거나, 떼거나 마우스를 클릭하거나 꾹 누르다 떼거나 등의 입력들이다.

 

이런 Event들을 받아서 화면의 색을 바꾸는 기능을 만들어보자

 

import pygame
import sys

#pygame 초기화
pygame.init()

#윈도우 화면 크기
size = (800, 600)
pd = pygame.display
screen = pd.set_mode((size))

#윈도우 상단 제목
pd.set_caption("Event Test")

running = True

#초기 배경 색 (흰색)
screen.fill((255,255,255))
pd.flip() #화면 업데이트

#루프 시작
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        #키를 눌렸을 때 일어나는 이벤트
        elif event.type == pygame.KEYDOWN:
        	#ESC를 누르면 게임 종료
            if event.key == pygame.K_ESCAPE:
                running = False
            #스페이스를 누르면 화면이 검은색으로 바뀌며 'Space KeyDown' 출력
            elif event.key == pygame.K_SPACE:
                print("Space KeyDown")
                screen.fill((0,0,0))
                pd.flip()
        #마우스를 눌렸을 때 일어나는 이벤트
        elif event.type == pygame.MOUSEBUTTONDOWN:
        	#버튼 값이 1일 때는 왼쪽 마우스를 클릭했다는 것
            if event.button == 1:
                print("Left Mouse Click")
                screen.fill((255,255,255))
                pd.flip()

pygame.quit()
sys.exit()

 

pygame.display의 set_mode나 pygame.display.set_mode는 튜플로 인자를 전달받기 때문에 괄호가 두 개인 것을 꼭 주의해야 한다.

 

실행해 보면 초기화면은 흰 바탕으로 시작되고, SpaceBar 키를 누르면 배경이 검은색으로 변한다.

다시 왼쪽 마우스를 클릭하면 배경이 검은색으로 변하는 걸 볼 수 있다.

 


이벤트 종류

  • QUIT : x버튼을 누르거나 시스템 종료 명령을 수신할 때 발생
  • KEYDOWN : 키보드의 키를 누를 때 발생
  • KEYUP : 키보드의 키를 뗄 때 발생
  • MOUSEBUTTONDOWN : 마우스 버튼을 클릭할 때 발생
  • MOUSEBUTTONUP : 마우스 버튼을 뗄 때 발생
  • MOUSEMOTION : 마우스를 움직일 때 발생
  • MOUSEWHEEL : 마우스 휠을 움직일 때 발생
  • VIDEORESIZE : 윈도우 크기가 변경될 때 발생
  • VIDEOEXOPSE : 일부 렌더링 된 내용이 보일 때 발생
  • USEREVENT : 사용자 정의 이벤트, 사용자가 원하는 시간에 이벤트를 생성하여 사용가능

이벤트 Key 사용방법

KEYDOWN, KEYUP

-pygame.K_(키 종류)로 사용

ex) pygame.K_SPACE는 스페이스바가 눌리거나 떼 졌다는 뜻

 

MOUSEBUTTON 관련

event.button이 숫자로 입력된다.

1 - 마우스 왼쪽 버튼

2 - 휠 버튼

3 - 오른쪽 버튼

4 - 휠을 위로 굴리는 행동

5 - 휠을 아래로 굴리는 행동