[python] Pygame을 활용한 플랫폼 체크포인트 게임 만들기

이번 프로젝트에서는 Pygame을 사용하여 플랫폼 체크포인트 게임을 만들어 보겠습니다. 이 게임에서는 플레이어가 플랫폼을 오르내리며 체크포인트를 통과해야 합니다.

개발 환경 설정

먼저, Pygame을 설치해야 합니다. 다음 명령을 사용하여 Pygame을 설치할 수 있습니다:

pip install pygame

게임 기본 구조

  1. Pygame 초기화
  2. 게임 창 생성
  3. 게임 루프 작성
  4. 키 입력 처리
  5. 플레이어와 플랫폼 생성
  6. 충돌 감지와 체크포인트 통과 확인
  7. 게임 오버 처리

Pygame 초기화

먼저 Pygame을 초기화합니다. 다음 코드를 작성하여 Pygame을 초기화합니다:

import pygame

pygame.init()

게임 창 생성

다음으로 게임 창을 생성합니다. 게임 창 크기와 제목을 설정합니다. 다음 코드를 사용하여 게임 창을 생성할 수 있습니다:

WIDTH = 800
HEIGHT = 600

win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("플랫폼 체크포인트 게임")

게임 루프 작성

게임 루프는 게임을 실행하는 메인 루프입니다. 이 루프는 게임 오버가 될 때까지 계속 실행됩니다. 다음 코드를 사용하여 게임 루프를 작성할 수 있습니다:

game_over = False

while not game_over:
    # 게임 로직 작성
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
    
    pygame.display.update()

pygame.quit()

키 입력 처리

게임에서는 키 입력을 처리해야 합니다. 사용자로부터 오른쪽 또는 왼쪽 화살표 키를 입력받아 플레이어를 이동시킬 수 있습니다. 다음 코드를 사용하여 키 입력 처리를 할 수 있습니다:

keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT]:
    # 왼쪽으로 이동하는 로직 작성

if keys[pygame.K_RIGHT]:
    # 오른쪽으로 이동하는 로직 작성

플레이어와 플랫폼 생성

다음으로 플레이어와 플랫폼을 생성합니다. 플레이어는 게임 창의 특정 위치에 생성되며 화면 아래로 떨어지지 않도록 해야 합니다. 플랫폼은 플레이어가 올라갈 수 있는 고정된 위치에 생성됩니다. 다음 코드를 사용하여 플레이어와 플랫폼을 생성할 수 있습니다:

player_width = 50
player_height = 50
player_x = WIDTH // 2 - player_width // 2
player_y = HEIGHT - player_height

platform_width = 200
platform_height = 20
platform_x = WIDTH // 2 - platform_width // 2
platform_y = HEIGHT - platform_height - 50

player = pygame.Rect(player_x, player_y, player_width, player_height)
platform = pygame.Rect(platform_x, platform_y, platform_width, platform_height)

충돌 감지와 체크포인트 통과 확인

이제 충돌 감지와 체크포인트 통과를 확인하는 로직을 작성해야 합니다. 플레이어가 플랫폼과 충돌하면 플레이어는 더 이상 아래로 떨어지지 않도록 해야 합니다. 체크포인트를 통과할 때마다 점수가 증가하며, 게임 오버 조건을 만족하면 게임 종료 화면을 표시해야 합니다. 다음 코드를 사용하여 충돌 감지와 체크포인트 통과 확인을 할 수 있습니다:

score = 0
game_over = False

while not game_over:
    # 게임 로직 작성
    
    if player.colliderect(platform):
        # 플레이어와 플랫폼이 충돌한 경우 처리 로직 작성
        pass
    
    if player.top <= 0:
        # 체크포인트를 통과한 경우 처리 로직 작성
        score += 1
        player.y = player_y
    
    pygame.display.update()

pygame.quit()

게임 오버 처리

게임 오버 조건이 만족되면 게임 종료 화면을 표시해야 합니다. 다음 코드를 사용하여 게임 오버 처리를 할 수 있습니다:

game_over = False

while not game_over:
    # 게임 오버 로직 작성
    pygame.display.update()

pygame.quit()

전체 코드

import pygame

pygame.init()

WIDTH = 800
HEIGHT = 600

win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("플랫폼 체크포인트 게임")

player_width = 50
player_height = 50
player_x = WIDTH // 2 - player_width // 2
player_y = HEIGHT - player_height

platform_width = 200
platform_height = 20
platform_x = WIDTH // 2 - platform_width // 2
platform_y = HEIGHT - platform_height - 50

player = pygame.Rect(player_x, player_y, player_width, player_height)
platform = pygame.Rect(platform_x, platform_y, platform_width, platform_height)

score = 0
game_over = False

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

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]:
        # 왼쪽으로 이동하는 로직 작성
        pass

    if keys[pygame.K_RIGHT]:
        # 오른쪽으로 이동하는 로직 작성
        pass

    if player.colliderect(platform):
        # 플레이어와 플랫폼이 충돌한 경우 처리 로직 작성
        pass

    if player.top <= 0:
        # 체크포인트를 통과한 경우 처리 로직 작성
        score += 1
        player.y = player_y

    # 게임 오버 로직 작성

    pygame.display.update()

pygame.quit()

이제 Pygame을 활용하여 플랫폼 체크포인트 게임을 만들 수 있습니다. 자신만의 추가 기능이나 스타일을 더해 개선해보세요!