[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.score
와 self.level
에 대입하여 현재 상태로 복원합니다.
마무리
이렇게 Pygame을 사용하여 게임 저장 및 불러오기 기능을 구현할 수 있습니다. 저장과 불러오기 기능은 게임을 일시 중지하거나 다시 시작할 때 유용하며, 플레이어의 편의성을 높일 수 있습니다. Pygame 외에도 다른 게임 개발 프레임워크에서도 비슷한 방식으로 저장 및 불러오기 기능을 구현할 수 있습니다.
참고 문서: Python pickle 모듈