파이썬으로 만드는 나만의 게임 개발 강좌, 3강에 오신 걸 환영합니다!
이전 강의에서 우리는 배경과 캐릭터 이미지를 출력해봤습니다. 이번 강의에서는 본격적으로 키보드 입력을 받아 캐릭터를 **상하좌우로 자유롭게 움직이는 방법**을 배워볼게요.
이번 강의에서 배울 내용
- 이벤트(Event) 처리 방식 이해
- 방향키 입력 감지하기
- 캐릭터 위치 갱신 및 화면 반영
1. 방향키 이벤트란?
Pygame에서는 사용자의 키보드나 마우스 입력을 이벤트로 인식합니다. 키를 누르는 행위는 KEYDOWN
, 떼는 행위는 KEYUP
이벤트로 처리합니다.
또한, 키보드에서 어떤 키가 눌렸는지를 알기 위해 event.key
값을 검사해야 합니다.
2. 전체 코드 실습
import pygame
pygame.init()
# 화면 크기 설정
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 게임 창 제목
pygame.display.set_caption("방향키로 캐릭터 움직이기")
# 배경과 캐릭터 이미지 불러오기
background = pygame.image.load("background.png")
character = pygame.image.load("character.png")
# 캐릭터 위치 및 크기 정보
character_size = character.get_rect().size
character_width = character_size[0]
character_height = character_size[1]
character_x_pos = (screen_width - character_width) / 2
character_y_pos = screen_height - character_height
# 이동할 좌표
to_x = 0
to_y = 0
# 이동 속도
speed = 0.6
# FPS 설정
clock = pygame.time.Clock()
running = True
while running:
dt = clock.tick(60) # 초당 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:
to_x -= speed
elif event.key == pygame.K_RIGHT:
to_x += speed
elif event.key == pygame.K_UP:
to_y -= speed
elif event.key == pygame.K_DOWN:
to_y += speed
if event.type == pygame.KEYUP:
if event.key in [pygame.K_LEFT, pygame.K_RIGHT]:
to_x = 0
if event.key in [pygame.K_UP, pygame.K_DOWN]:
to_y = 0
character_x_pos += to_x * dt
character_y_pos += to_y * dt
# 캐릭터가 화면 밖으로 나가지 않게
if character_x_pos < 0:
character_x_pos = 0
elif character_x_pos > screen_width - character_width:
character_x_pos = screen_width - character_width
if character_y_pos < 0:
character_y_pos = 0
elif character_y_pos > screen_height - character_height:
character_y_pos = screen_height - character_height
screen.blit(background, (0, 0))
screen.blit(character, (character_x_pos, character_y_pos))
pygame.display.update()
pygame.quit()
3. 코드 설명
- pygame.KEYDOWN / KEYUP: 키보드 입력 감지
- pygame.K_LEFT: 왼쪽 방향키
- dt: 프레임 보정값 (속도 일정 유지용)
- to_x / to_y: 이동 방향과 속도
- 화면 밖으로 나가지 않도록 경계 조건 추가
4. 직접 해보는 연습
- 속도를 조절해 캐릭터 움직임을 부드럽게 해보기
- 배경 이미지를 바꿔보며 이동 느낌 확인
- 캐릭터 이미지를 다른 이미지로 교체해 보기
5. 다음 강의 예고
4강: 충돌 처리 – 두 객체가 부딪혔을 때 멈추기
다음 시간에는 움직이는 캐릭터가 특정 오브젝트와 충돌했을 때, 동작을 멈추거나 다른 반응을 하도록 만드는 방법을 배워볼게요. 게임의 핵심 기능 중 하나인 충돌 감지의 시작입니다!
—
이 강의는 Pygame으로 직접 게임을 만드는 파이썬 실전 프로젝트 연재입니다. 누구나 따라 할 수 있도록 쉽게 설명하고 있습니다.