[python] Pygame에서 게임 저장 및 불러오기 구현하기

이번에는 Pygame을 사용하여 게임을 저장하고 불러오는 기능을 추가하는 방법에 대해 알아보겠습니다. 게임을 저장하고 불러오는 기능은 플레이어가 게임을 일시 중지하고 다시 시작할 때 유용합니다.

저장 기능 구현하기

먼저, 게임을 저장하는 기능을 구현해보겠습니다. 아래는 예시 코드입니다.

import pygame
import pickle

# 게임 상태를 저장하는 클래스
class GameState:
    def __init__(self):
        self.score = 0
        self.level = 1
    
    def save(self):
        with open("game_state.pickle", "wb") as file:
            pickle.dump(self, file, pickle.HIGHEST_PROTOCOL)
    
    def load(self):
        with open("game_state.pickle", "rb") as file:
            saved_state = pickle.load(file)
            self.score = saved_state.score
            self.level = saved_state.level

# 게임 객체 생성
game_state = GameState()

# 키 입력 처리
def handle_input():
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_s:
                game_state.save()
            elif event.key == pygame.K_l:
                game_state.load()

# 게임 루프
while True:
    handle_input()

    # 게임 로직
    # ...

    # 게임 그리기
    # ...

위 코드에서는 GameState 클래스를 생성하여 게임 상태를 저장하고 불러오는 기능을 구현했습니다. save() 메서드를 호출하면 현재 게임 상태를 “game_state.pickle” 파일에 저장하고, load() 메서드를 호출하면 이전에 저장한 게임 상태를 불러와서 현재 상태로 복원합니다.

불러오기 기능 구현하기

이제 저장한 게임 상태를 불러오는 기능을 구현해보겠습니다. 아래는 예시 코드입니다.

import pygame
import pickle

# 게임 상태를 저장하는 클래스
class GameState:
    def __init__(self):
        self.score = 0
        self.level = 1
    
    def save(self):
        with open("game_state.pickle", "wb") as file:
            pickle.dump(self, file, pickle.HIGHEST_PROTOCOL)
    
    def load(self):
        with open("game_state.pickle", "rb") as file:
            saved_state = pickle.load(file)
            self.score = saved_state.score
            self.level = saved_state.level

# 게임 객체 생성
game_state = GameState()

# 키 입력 처리
def handle_input():
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_s:
                game_state.save()
            elif event.key == pygame.K_l:
                game_state.load()

# 게임 루프
while True:
    handle_input()

    # 게임 로직
    # ...

    # 게임 그리기
    # ...

위 코드에서 load() 메서드를 호출하면 이전에 저장한 게임 상태를 불러옵니다. 파일에서 읽어온 상태를 self.scoreself.level에 대입하여 현재 상태로 복원합니다.

마무리

이렇게 Pygame을 사용하여 게임 저장 및 불러오기 기능을 구현할 수 있습니다. 저장과 불러오기 기능은 게임을 일시 중지하거나 다시 시작할 때 유용하며, 플레이어의 편의성을 높일 수 있습니다. Pygame 외에도 다른 게임 개발 프레임워크에서도 비슷한 방식으로 저장 및 불러오기 기능을 구현할 수 있습니다.

참고 문서: Python pickle 모듈