[python] Pygame을 활용한 타워 디펜스 게임 만들기

Tower Defense

이번 튜토리얼에서는 Pygame을 사용하여 간단한 타워 디펜스 게임을 만들어보겠습니다. 타워 디펜스 게임은 플레이어가 적들을 막기 위해 다양한 타워를 배치하고 업그레이드하는 게임입니다. 게임의 목표는 적들이 도착지에 도달하지 못하도록 타워들을 제대로 배치하는 것입니다.

필요한 준비물

  1. Python 3.x 버전
  2. Pygame 라이브러리 (pip install pygame으로 설치 가능)

게임 화면 설정

import pygame

# 게임 화면 크기 설정
WIDTH, HEIGHT = 800, 600

# Pygame 초기화
pygame.init()

# 게임 화면 생성
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("타워 디펜스 게임")

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

# Pygame 종료
pygame.quit()

위의 코드는 Pygame을 초기화하고 게임 화면을 생성하는 기본 코드입니다. 게임 화면 크기는 (WIDTH, HEIGHT)로 설정하며, pygame.display.set_caption()을 사용하여 게임 타이틀을 설정할 수 있습니다. 게임 루프를 통해 게임 창이 끌 때까지 프로그램이 실행됩니다.

타워 추가하기

# 타워 이미지 로드
tower_img = pygame.image.load("tower.png")

# 타워 클래스
class Tower:
    def __init__(self, x, y):
        self.image = tower_img
        self.rect = self.image.get_rect()
        self.rect.center = (x, y)
    
    def update(self):
        pass
    
    def draw(self, screen):
        screen.blit(self.image, self.rect)

위의 코드에서는 타워 이미지를 로드하고, 타워 클래스를 정의합니다. Tower 클래스는 __init__ 메서드를 통해 타워의 초기 위치를 설정하고, update 메서드와 draw 메서드를 갖습니다. update 메서드는 타워의 상태를 업데이트하는 코드를 추가할 수 있고, draw 메서드는 타워를 게임 화면에 그리는 역할을 합니다.

게임 루프 업데이트

# 게임 루프
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    screen.fill((0, 0, 0))  # 화면 배경 색상 설정
    
    # 타워 그리기
    tower = Tower(WIDTH // 2, HEIGHT // 2)  # 중앙에 타워 생성
    tower.draw(screen)
    
    pygame.display.flip()  # 화면 업데이트

# Pygame 종료
pygame.quit()

게임 루프를 업데이트하여 화면 배경 색상을 검은색으로 설정하고, 중앙에 타워를 생성하고 그립니다. pygame.display.flip() 함수를 사용하여 화면을 업데이트합니다.

결론

이번 튜토리얼에서는 Pygame을 활용하여 간단한 타워 디펜스 게임을 만들어보았습니다. 위의 코드를 기반으로 게임을 더욱 발전시켜서 다양한 타워와 적, 업그레이드 시스템 등을 추가해보세요. Pygame을 통해 게임 개발에 도전해보고 흥미로운 게임을 만들어보세요!

참고: Pygame 공식 문서