[python] Pygame으로 유령 사냥 게임 개발하기

이번에는 파이썬 라이브러리인 Pygame을 사용하여 유령 사냥 게임을 개발해보겠습니다. Pygame은 게임 개발에 사용되는 간단하고 강력한 도구로 유명합니다. 이번 게임에서는 유령을 피해서 점수를 획득하는 방식으로 진행됩니다.

게임 개발 환경 설정

먼저, Pygame을 설치해야합니다. 아래의 명령어를 사용하여 설치해주세요.

pip install pygame

게임 유저 인터페이스 구성

게임을 시작하기 전에, 필요한 리소스 파일들을 준비해야 합니다. 게임에서 사용할 이미지 파일을 다운로드하고, 프로젝트 폴더에 저장해주세요.

이제 다음과 같이 게임 유저 인터페이스를 구성해보겠습니다. 먼저, 필요한 라이브러리들을 가져와주세요.

import pygame
import random

다음으로, 윈도우 크기를 설정해주세요.

WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600

그리고 게임의 색깔을 정의해주세요.

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

게임의 시작을 합니다. pygame.init() 함수를 호출하여 초기화하고, 윈도우를 생성합니다.

pygame.init()
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("유령 사냥 게임")

게임 루프를 설정합니다. 유저가 게임을 종료하기 전까지 게임이 계속해서 실행되도록합니다.

game_over = False
clock = pygame.time.Clock()

while not game_over:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True

    window.fill(BLACK)

    pygame.display.flip()

    clock.tick(60)

pygame.quit()

이제 python main.py 명령어를 실행하면, 유저 인터페이스가 구성될 것입니다.

유령과 유저 추가하기

게임에 유령과 유저를 추가해보겠습니다.

class Ghost(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load('ghost.png').convert_alpha()
        self.rect = self.image.get_rect()
        self.rect.x = random.randint(0, WINDOW_WIDTH - self.rect.width)
        self.rect.y = random.randint(0, WINDOW_HEIGHT - self.rect.height)

    def update(self):
        self.rect.x += random.randint(-3, 3)
        self.rect.y += random.randint(-3, 3)
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load('player.png').convert_alpha()
        self.rect = self.image.get_rect()
        self.rect.x = WINDOW_WIDTH // 2
        self.rect.y = WINDOW_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

게임 루프 내부에서 유령과 유저를 생성하고, 업데이트 메소드를 호출하면서 위치를 업데이트합니다.

ghost = Ghost()
player = Player()
all_sprites = pygame.sprite.Group()
all_sprites.add(ghost)
all_sprites.add(player)

while not game_over:
    # 이전 코드 생략

    all_sprites.update()
    all_sprites.draw(window)

    # 이후 코드 생략

이제 유령과 유저가 화면에 나타날 것입니다.

충돌 검사하기

마지막으로, 유령과 유저 간의 충돌을 검사하여 스코어를 증가시키는 로직을 추가해보겠습니다.

score = 0
font = pygame.font.Font(None, 36)

while not game_over:
    # 이전 코드 생략

    if pygame.sprite.collide_rect(player, ghost):
        ghost.rect.x = random.randint(0, WINDOW_WIDTH - ghost.rect.width)
        ghost.rect.y = random.randint(0, WINDOW_HEIGHT - ghost.rect.height)
        score += 1

    score_text = font.render("Score: " + str(score), True, WHITE)
    window.blit(score_text, (10, 10))

    pygame.display.flip()

이제 유령과 유저가 충돌할 때마다 스코어가 증가되고, 화면에 표시됩니다.

이번에는 Pygame을 사용하여 간단한 유령 사냥 게임을 개발해보았습니다. Pygame을 활용하면 다양한 종류의 게임을 개발할 수 있으며, 유저 인터레이스, 객체 이동, 충돌 검사 등 다양한 기능을 구현할 수 있습니다. 향후 게임을 확장하고 다양한 기능을 추가해보세요!