[파이썬] pygame 게임 세이브 및 로드 시스템

Pygame은 많은 사람들이 게임 제작에 사용하는 강력한 Python 라이브러리입니다. 게임을 개발하는 동안 마주치는 중요한 측면 중 하나는 게임 상태를 저장하고 로드하는 기능입니다. 이 기능은 플레이어의 진행 상황을 저장하고 게임을 나중에 다시 시작할 수 있도록 합니다.

게임 세이브 시스템

게임 세이브 시스템을 구현하기 위해 Pygame과 Python 내장 모듈인 pickle을 사용할 것입니다. pickle은 객체를 직렬화하고 디시리얼화하는 데 사용되며 파일로 저장하는 기능을 제공합니다.

import pygame
import pickle

# 게임 상태를 저장할 클래스
class GameState:
    def __init__(self):
        self.score = 0
        self.level = 1

    def increase_score(self, points):
        self.score += points

    def increase_level(self):
        self.level += 1

    # 게임 상태를 파일로 저장
    def save(self):
        with open('gamestate.pickle', 'wb') as f:
            pickle.dump(self, f)

    # 파일에서 게임 상태를 로드
    def load(self):
        with open('gamestate.pickle', 'rb') as f:
            saved_state = pickle.load(f)
            self.score = saved_state.score
            self.level = saved_state.level

# 게임 초기화
pygame.init()
game_state = GameState()

# 게임 루프
running = True
while running:
    # 게임 로직

    # 키 입력 처리
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            # S 키를 누르면 게임 상태 저장
            if event.key == pygame.K_s:
                game_state.save()
                print("게임이 저장되었습니다.")
            # L 키를 누르면 게임 상태 로드
            elif event.key == pygame.K_l:
                game_state.load()
                print("게임이 로드되었습니다.")
        if event.type == pygame.QUIT:
            running = False

위의 예제 코드에서는 GameState 클래스를 사용하여 게임 상태를 저장하고 로드하는 메서드를 구현했습니다. save 메서드는 pickle을 사용하여 GameState 객체를 gamestate.pickle라는 파일에 저장하고, load 메서드는 해당 파일에서 게임 상태를 로드합니다. 이후 키 입력 이벤트를 처리하여 ‘S’ 키를 누르면 게임 상태가 저장되고, ‘L’ 키를 누르면 게임 상태가 로드됩니다.

결론

플레이어의 게임 상태를 저장하고 로드하는 기능은 게임 개발의 중요한 측면입니다. 이를 통해 플레이어는 게임을 나중에 다시 시작하고 이어서 플레이할 수 있습니다. Pygame과 pickle을 사용하여 게임 세이브 및 로드 시스템을 구현하는 것은 간단하며 유용한 방법입니다. 이를 통해 게임을 더욱 흥미롭고 사용자 친화적인 경험으로 만들 수 있습니다.