[파이썬] pygame 타일 기반 게임 개발

Pygame은 파이썬에서 게임을 만들기 위한 강력한 라이브러리입니다. 이번 블로그 포스트에서는 Pygame을 사용하여 타일 기반 게임을 개발하는 방법을 알아보겠습니다.

타일 기반 게임이란?

타일 기반 게임은 격자 형태로 구성된 작은 사각형 조각들을 이용하여 게임 화면을 구성하는 게임입니다. 주로 플레이어가 캐릭터를 조작하고 맵을 탐험하거나 퍼즐을 해결하는 방식으로 진행됩니다. 타일 기반 게임은 슈퍼 마리오 브라더스나 레전드 오브 조로와 같은 게임들로 유명합니다.

Pygame 설치

먼저 Pygame을 설치해야 합니다. 다음 명령어를 사용하여 Pygame을 설치하세요.

pip install pygame

게임 창 생성하기

먼저 Pygame에서 필요한 라이브러리를 가져옵니다.

import pygame
from pygame.locals import *

다음으로 게임을 초기화하고 창을 만듭니다.

pygame.init()

# 창 크기 설정
WIDTH, HEIGHT = 800, 600
window = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("타일 기반 게임")

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

    pygame.display.update()

pygame.quit()

위 코드에서 pygame.init()을 호출하여 Pygame을 초기화하고, pygame.display.set_mode()를 호출하여 창의 크기를 설정합니다. pygame.display.set_caption()을 사용하여 창의 제목을 설정할 수도 있습니다. 게임 창을 나가기 위해선 QUIT 이벤트를 감지하여 running 변수를 False로 변경합니다. 게임 루프를 종료하기 전에 pygame.quit()를 호출하여 Pygame을 종료합니다.

맵 생성하기

타일 기반 게임에서는 맵을 생성하여 플레이어가 탐험할 수 있게 합니다. 맵은 보통 2D 격자로 구성되며, 각 격자에는 타일을 배치하여 다양한 형태의 맵을 만듭니다.

# 맵 크기 설정
MAP_WIDTH, MAP_HEIGHT = 16, 12

# 타일 크기 설정
TILE_SIZE = 50

# 맵 생성
map_data = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]

def draw_map():
    for row in range(MAP_HEIGHT):
        for col in range(MAP_WIDTH):
            tile = map_data[row][col]
            tile_rect = pygame.Rect(col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE)
            if tile == 1:
                pygame.draw.rect(window, (0, 0, 255), tile_rect)
            else:
                pygame.draw.rect(window, (255, 255, 255), tile_rect)

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

    window.fill((0, 0, 0))
    draw_map()
    pygame.display.update()

pygame.quit()

위 코드에서 map_data 리스트를 생성하여 맵 데이터를 정의합니다. 각 숫자는 타일의 종류를 나타냅니다. 맵을 그리기 위해 draw_map() 함수를 작성하고, map_data 내용에 따라 적절한 색으로 타일을 그립니다. 게임 루프 내에서 draw_map() 함수를 호출하여 맵을 그립니다.

이번 포스트에서는 Pygame을 사용하여 타일 기반 게임을 개발하는 방법을 알아보았습니다. Pygame의 다양한 기능과 기능들을 활용하여 더욱 흥미로운 게임을 개발할 수 있습니다.