[python] Pygame을 사용하여 사이드 스크롤 게임 만들기

소개

이 튜토리얼에서는 Python의 Pygame 라이브러리를 사용하여 간단한 사이드 스크롤 게임을 만드는 방법을 알려드리겠습니다. Pygame은 게임 개발을 위한 강력한 도구로, 그래픽 및 사운드 처리뿐만 아니라 입력 이벤트 처리 등의 기능을 제공합니다.

게임 설계

우리의 게임은 플레이어가 캐릭터를 제어하여 장애물을 피해가며 점수를 얻는 것을 목표로 합니다. 게임 화면은 가로로 스크롤되는 배경과 플레이어 캐릭터가 그려집니다. 플레이어는 키보드 입력을 사용하여 점프하거나 움직일 수 있습니다.

Step 1: Pygame 초기화

가장 먼저 Pygame을 초기화해야 합니다. 아래의 코드를 사용하여 Pygame을 사용할 수 있도록 초기화합니다.

import pygame
from pygame.locals import *

pygame.init()

# 게임 윈도우 크기 설정
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 400

# 게임 윈도우 생성
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("Side Scroll Game")

# 게임 루프 시작
running = True
while running:
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

pygame.quit()

Step 2: 배경 그리기

다음으로는 배경을 그리는 기능을 추가해보겠습니다. 배경은 게임 화면을 가로로 스크롤하여 움직이는 효과를 주는 역할을 합니다. 아래의 코드를 사용하여 배경을 그릴 수 있습니다.

# 배경 이미지 로드
background_image = pygame.image.load("background.png")
background_x = 0

# 게임 루프에 배경 그리기 추가
while running:
    window.blit(background_image, (background_x, 0))
    window.blit(background_image, (background_x + WINDOW_WIDTH, 0))
    background_x -= 1

    # 배경이 스크롤되는 범위를 벗어날 경우 초기화
    if background_x <= -WINDOW_WIDTH:
        background_x = 0

Step 3: 플레이어 캐릭터 추가

이제 플레이어 캐릭터를 추가해보겠습니다. 플레이어 캐릭터는 사용자의 입력에 따라 움직일 수 있어야 합니다. 아래의 코드를 사용하여 플레이어 캐릭터를 추가할 수 있습니다.

# 플레이어 캐릭터 이미지 로드
player_image = pygame.image.load("player.png")
player_x = 100
player_y = 200

# 게임 루프에 플레이어 그리기 추가
while running:
    # 이전 코드 생략

    # 플레이어 그리기
    window.blit(player_image, (player_x, player_y))
    
    # 사용자의 입력 처리
    keys = pygame.key.get_pressed()
    if keys[K_LEFT]:
        player_x -= 5
    if keys[K_RIGHT]:
        player_x += 5
    if keys[K_SPACE]:
        # 점프 로직 추가

    # 이전 코드 생략

Step 4: 장애물과 충돌 체크

마지막으로 장애물을 추가하고, 플레이어가 장애물과 충돌하는지 확인하는 기능을 구현해보겠습니다. 아래의 코드를 사용하여 장애물과 충돌 체크를 구현할 수 있습니다.

# 장애물 이미지 로드
obstacle_image = pygame.image.load("obstacle.png")
obstacle_x = WINDOW_WIDTH
obstacle_y = 350

# 게임 루프에 장애물 그리기 및 충돌 체크 추가
while running:
    # 이전 코드 생략

    # 장애물 그리기
    window.blit(obstacle_image, (obstacle_x, obstacle_y))
    obstacle_x -= 3
    
    # 충돌 체크
    player_rect = player_image.get_rect()
    obstacle_rect = obstacle_image.get_rect()
    player_rect.x = player_x
    player_rect.y = player_y
    obstacle_rect.x = obstacle_x
    obstacle_rect.y = obstacle_y

    if player_rect.colliderect(obstacle_rect):
        # 게임 오버 로직 추가

    # 이전 코드 생략

위의 코드를 통해 사이드 스크롤 게임을 만들 수 있습니다. 추가로 점수 카운팅, 게임 오버 화면 등의 기능을 구현할 수도 있습니다. Pygame에 대한 더 자세한 내용은 공식 문서를 참고하시기 바랍니다.