[python] Pygame을 활용한 실시간 대전 게임 제작하기

Pygame은 파이썬을 위한 게임 개발 라이브러리로, 간단하고 직관적인 인터페이스를 제공하여 게임 개발을 쉽게 시작할 수 있습니다. 이번 튜토리얼에서는 Pygame을 사용하여 실시간 대전 게임을 만드는 방법에 대해 알아보겠습니다.

게임 개요

우리는 플레이어와 컴퓨터가 맞붙는 실시간 전투를 다루는 게임을 개발할 것입니다. 플레이어는 키보드를 사용하여 자신의 캐릭터를 조작하고, 컴퓨터는 미리 설정된 알고리즘에 따라 행동합니다. 게임은 두 플레이어 중 하나가 생명력이 모두 소진될 때까지 진행됩니다.

개발 과정

  1. Pygame 설치하기
  2. 게임 화면 초기화하기
  3. 플레이어와 적 캐릭터 생성하기
  4. 이벤트 처리하기
  5. 캐릭터 이동과 충돌 검사하기
  6. 실시간 게임 루프 만들기
  7. 게임 오버 처리하기

1. Pygame 설치하기

Pygame을 설치하기 위해서는 Python이 먼저 설치되어 있어야 합니다. 아래의 명령을 사용하여 Pygame을 설치할 수 있습니다:

pip install pygame

2. 게임 화면 초기화하기

Pygame을 사용하여 게임 창을 만들기 위해 다음 코드를 작성합니다:

import pygame

WIDTH = 800
HEIGHT = 600

pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("실시간 대전 게임")

3. 플레이어와 적 캐릭터 생성하기

플레이어와 적 캐릭터를 생성하기 위해 다음 코드를 작성합니다:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((50, 50))
        self.image.fill((0, 255, 0))
        self.rect = self.image.get_rect()
        self.rect.center = (WIDTH / 2, HEIGHT / 2)

    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            self.rect.x -= 5
        if keys[pygame.K_RIGHT]:
            self.rect.x += 5
        if keys[pygame.K_UP]:
            self.rect.y -= 5
        if keys[pygame.K_DOWN]:
            self.rect.y += 5

player = Player()

all_sprites = pygame.sprite.Group()
all_sprites.add(player)

4. 이벤트 처리하기

이벤트 처리를 위해 게임 루프 안에 다음 코드를 추가합니다:

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    all_sprites.update()
    screen.fill((0, 0, 0))
    all_sprites.draw(screen)
    pygame.display.flip()

5. 캐릭터 이동과 충돌 검사하기

캐릭터 이동과 충돌 검사를 위해 다음 코드를 추가합니다:

class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((30, 30))
        self.image.fill((255, 0, 0))
        self.rect = self.image.get_rect()
        self.rect.x = random.randint(0, WIDTH - self.rect.width)
        self.rect.y = random.randint(0, HEIGHT - self.rect.height)
        self.speed = random.randint(1, 3)

    def update(self):
        self.rect.y += self.speed
        if self.rect.top > HEIGHT:
            self.rect.x = random.randint(0, WIDTH - self.rect.width)
            self.rect.y = random.randint(-100, -self.rect.height)
            self.speed = random.randint(1, 3)

    def collision_check(self, other):
        return self.rect.colliderect(other.rect)

enemies = pygame.sprite.Group()
for _ in range(10):
    enemy = Enemy()
    enemies.add(enemy)
    all_sprites.add(enemy)

for enemy in enemies:
    if enemy.collision_check(player):
        # 충돌하였을 때의 처리 코드 추가

6. 실시간 게임 루프 만들기

실시간 게임 루프를 만들기 위해 게임 루프 안에 다음 코드를 추가합니다:

while running:
    # 게임 루프 코드 추가
    # 이벤트 처리
    # 캐릭터 업데이트
    # 충돌 검사

7. 게임 오버 처리하기

게임 오버 처리를 위해 다음 코드를 게임 루프 안에 추가합니다:

while running:
    # 게임 루프 코드 추가
    # 이벤트 처리
    # 캐릭터 업데이트
    # 충돌 검사

    if pygame.sprite.spritecollide(player, enemies, True):
        # 플레이어가 적과 충돌했을 때의 처리 코드 추가
        running = False

pygame.quit()

결론

이제 Pygame을 활용하여 실시간 대전 게임을 개발하는 방법을 알아보았습니다. 게임의 진행, 캐릭터 조작, 충돌 검사 등 다양한 기능을 추가하여 본인만의 게임을 만들어보세요. Pygame은 다양한 게임 개발에 유용한 도구이며, 자세한 내용은 Pygame 공식 문서를 참조하시기 바랍니다.

참고: Pygame 공식 문서