[python] Pygame을 이용한 미로 게임 제작하기

이번 포스트에서는 Python의 Pygame 라이브러리를 사용하여 미로 게임을 만드는 방법에 대해 알아보겠습니다. Pygame은 게임 개발을 위한 강력한 도구로, 2D 게임을 쉽게 만들 수 있습니다.

개요

  1. Pygame 설치하기
  2. 미로 생성하기
  3. 플레이어 움직이기
  4. 벽과 충돌 감지하기
  5. 게임 루프 생성하기
  6. 게임 종료하기

1. Pygame 설치하기

Pygame을 설치하기 위해서는 먼저 Python의 패키지 관리자인 pip를 사용해야 합니다. 아래의 명령을 터미널에서 실행하여 Pygame을 설치하세요.

pip install pygame

2. 미로 생성하기

게임을 시작하기 전에 미로를 생성해야 합니다. 이 예제에서는 2D 배열을 사용해 간단한 미로를 만들겠습니다. 각 셀은 벽인지 아닌지를 나타내는 값을 가지고 있습니다.

maze = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 1, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    [1, 0, 0, 0, 0, 0, 1, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]

3. 플레이어 움직이기

플레이어를 움직이기 위해서는 키보드 입력을 감지해야 합니다. Pygame의 pygame.KEYDOWN 이벤트를 사용하여 키보드 입력을 처리하는 코드를 작성하세요. 예제에서는 화살표 키를 사용해 움직일 수 있도록 구현했습니다.

import pygame

player_x = 1
player_y = 1

while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player_x -= 1
            elif event.key == pygame.K_RIGHT:
                player_x += 1
            elif event.key == pygame.K_UP:
                player_y -= 1
            elif event.key == pygame.K_DOWN:
                player_y += 1

    # 게임 화면 업데이트 및 플레이어 그리기
    pygame.display.update()

4. 벽과 충돌 감지하기

플레이어가 벽과 충돌하지 않도록 하기 위해서는 현재 위치에서의 이동 가능 여부를 체크해야 합니다. 예제에서는 maze 배열을 사용해 각 위치에 벽이 있는지 확인하도록 구현했습니다.

while True:
    ...

    # 벽과 충돌 감지
    if maze[player_y][player_x] == 1:
        # 플레이어가 벽에 부딪혔을 때 처리 코드 작성
        pass

5. 게임 루프 생성하기

게임을 실행하기 위해서는 메인 게임 루프를 생성해야 합니다. 이 루프 안에 게임 로직을 넣어 주면 됩니다. 예제에서는 게임 종료를 위해 pygame.QUIT 이벤트를 처리하도록 구현했습니다.

while True:
    ...

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 게임 종료 코드 작성
            pygame.quit()
            exit()

6. 게임 종료하기

게임을 종료하기 위해서는 pygame.quit() 함수를 사용하여 Pygame을 종료해야 합니다. 예제에서는 게임 종료 시 터미널에서도 프로그램을 종료하기 위해 exit() 함수를 호출했습니다.

while True:
    ...

    for event in pygame.event.get():
        ...

        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

이제 위의 코드를 조합해서 미로 게임을 만들 수 있습니다. Pygame의 다양한 기능들을 활용하여 게임을 더욱 풍부하게 만들어보세요.

참고 자료