강의노트 이벤트
조회수 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()
로그인 하면 댓글을 쓸 수 있습니다.