강의노트 이벤트

조회수 258 • 댓글 0 • 수정 8개월 전 크게 보기  
  • 파이게임
  • 파이게임

이벤트 종류

타입 동작 속성
pygame.QUIT 윈도우 x버튼이 눌리면 창을 닫음 none
pygame.KEYDOWN 키가 눌렸을때 발생 key, mod, unicode, scancode
pygame.KEYUP 키가 올라 갔을때 발생 key, mod
pygame.ACTIVEEVENT 마우스가 화면에 들어가거나 나가면 발생 gain, state
pygame.MOUSEMOTION 마우스가 움직일때 발생 pos, rel, button
pygame.MOUSEBUTTONUP 마우스 버튼을 땔때 발생 pos, button
pygame.MOUSEBUTTONDOWN 마우스 버튼이 눌렸을때 발생 pos, button
pygame.JOYAXISMOTION 조이스틱 축이 변경했을때 발생 joy, axis, value
pygame.JOYBALLMOTION 조이스틱 볼의 움직임이 있을때 발생 joy, ball, rel
pygame.JOYHATMOTION 조이스틱 hat이 바뀌면 발생 joy, hat, value
pygame.JOYBUTTONUP 조이스틱 버튼을 땔때 발생 joy, button
pygame.JOYBUTTONDOWN 조이스틱 버튼을 누를때 발생 joy, button
pygame.VIDEORESIZE 창크기를 조정하면 발생 size, width, height
pygame.VIDEOEXPOSE 화면을 다시 그려야하는 경우 발생 none
pygame.USEREVENT 사용자가 임의로 설정하는 이벤트 code

키 이벤트

눌린 키가 키상수와 같을때 명령이 동작하게하기 위한 루틴은 다음과 같다. 키를 누를때마다 한번씩 실행된다.

if event.type == pygame.KEYDOWN:
   if event.key == pygame.키상수:
      명령 모음

키를 누르고 있을때 연속적으로 동작되게하기위해서는

keys = pygame.key.get_pressed()
if keys[키상수]:
    명령 모음

혹은

for event in pygame.event.get():
   if event.type == pygame.KEYDOWN:
      if event.key == pygame.키상수:
         변수 설정
   if event.type == pygame.KEYUP   
      if event.key == pygame.키상수
         변수해제
if 변수:      
   명령 모음

키 상수

상수 설명 상수 설명 상수 설명 상수 설명 상수 설명
K_0 0 K_1 1 K_2 2 K_3 3 K_4 4
K_5 5 K_6 6 K_7 7 K_8 8 K_9 9
K_a a K_b b K_c c K_d d K_e e
K_f f K_g g K_h h K_i i K_j j
K_k k K_l l K_m m K_n n K_o o
K_p p K_q q K_r r K_s s K_t t
K_u u K_v v K_w w K_x x K_y y
K_z z K_F1 F1 K_F2 F2 K_F3 F3 K_F4 F4
K_F5 F5 K_F6 F6 K_F7 F7 K_F8 F8 K_F9 F9
K_F10 F10 K_F11 F11 K_F12 F12 K_F13 F13 K_F14 F14
K_F15 F15
상수 설명 상수 설명 상수 설명
K_UP up arrow K_DOWN down arrow K_RIGHT right arrow
K_LEFT left arrow K_DELETE delete K_INSERT insert
K_HOME home K_END end K_PAGEUP page up
K_PAGEDOWN page down K_NUMLOCK numlock K_CAPSLOCK capslock
K_SCROLLOCK scrollock K_RSHIFT right shift K_LSHIFT left shift
K_RCTRL right control K_LCTRL left control K_RALT right alt
K_LALT left alt K_RMETA right meta K_LMETA left meta
K_LSUPER left Windows key K_RSUPER right Windows key
K_MODE mode shift K_HELP help K_PRINT print screen
K_SYSREQ sysrq K_BREAK break K_MENU menu
K_POWER power K_EURO Euro K_AC_BACK Android back button
K_BACKSPACE backspace K_TAB tab K_CLEAR clear
K_RETURN return K_PAUSE pause K_ESCAPE escape
K_SPACE space K_EXCLAIM exclaim K_QUOTEDBL quotedbl
K_HASH hash K_DOLLAR dollar K_AMPERSAND ampersand
K_QUOTE quote K_LEFTPAREN left parenthesis K_RIGHTPAREN right parenthesis
K_ASTERISK asterisk K_PLUS plus sign K_COMMA comma
K_MINUS minus sign K_PERIOD period K_SLASH forward slash
K_BACKQUOTE grave K_COLON colon K_SEMICOLON semicolon
K_LESS less-than sign K_EQUALS equals sign K_GREATER greater-than sign
K_QUESTION question mark K_AT at K_LEFTBRACKET left bracket
K_BACKSLASH backslash K_RIGHTBRACKET right bracket K_CARET caret
K_UNDERSCORE underscore K_KP0 keypad 0 K_KP1 keypad 1
K_KP2 keypad 2 K_KP3 keypad 3 K_KP4 keypad 4
K_KP5 keypad 5 K_KP6 keypad 6 K_KP7 keypad 7
K_KP8 keypad 8 K_KP9 keypad 9 K_KP_PERIOD keypad period
K_KP_DIVIDE keypad divide K_KP_MULTIPLY keypad multiply K_KP_EQUALS keypad equals
K_KP_MINUS keypad minus K_KP_PLUS keypad plus K_KP_ENTER keypad enter

마우스 이벤트

마우스의 버튼에 따른 명령이 동작하게하기 위한 루틴은 다음과 같다.

if event.type == pygame.MOUSEBUTTONDOWN:
   if event.button == pygame.키상수:
      명령 모음

마우스 위치를 얻는 명령어

   x,y = pygame.mouse.get_pos()

마우스 이벤트 키 상수

상수 설명 상수 설명
1 left click 2 middle click
3 right click 4 scroll up
5 scroll down

예제

# pg_init05.py

import pygame
from pygame.locals import *
 
pygame.init()
screen = pygame.display.set_mode((500,400))
clock = pygame.time.Clock()

white = (255,255,255)
black = (0,0,0)
x = 0
y = 0
vel = 5

running = True
left_key, right_key, up_key, down_key = False, False, False, False

while running:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                print('left key clicked')
            if event.key == pygame.K_RIGHT:
                print('right key clicked')
            if event.key == pygame.K_UP:
                print('up key clicked')
            if event.key == pygame.K_DOWN:
                print('down key clicked')
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT:
                print('left key released')
            if event.key == pygame.K_RIGHT:
                print('right key released')
            if event.key == pygame.K_UP:
                print('up key released')
            if event.key == pygame.K_DOWN:
                print('down key released')
        if event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            if event.button == 1:
                s = 'left button'
            elif event.button == 2:
                s = 'middle button'
            elif event.button == 3:
                s = 'right button'
            elif event.button == 4:
                s = 'scroll up'
            elif event.button == 5:
                s = 'scroll down'
                
            print(f'mouse {s} and position : x={pos[0]}, y={pos[1]}')
    
    screen.fill(white)
    #screen.blit(p_img, (x,y))
    pygame.display.update()
pygame.quit()
이전 글
다음 글
댓글
댓글로 소통하세요.