[python] Pygame에서 화면 전환 처리하기

Pygame은 게임 개발에 사용되는 강력한 파이썬 라이브러리입니다. 게임을 개발하다보면 여러 화면을 전환해야하는 경우가 있는데, 이를 처리하는 방법을 알아보겠습니다.

화면 전환 처리의 기본 구조

Pygame에서 화면 전환을 처리하기 위해서는 다음과 같은 기본 구조를 따릅니다:

import pygame

# 화면 초기화
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("My Game")

# 게임 루프
running = True
while running:
    # 이벤트 처리
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    # 게임 로직 처리
    
    # 화면 업데이트
    
# 게임 종료
pygame.quit()

화면 전환 구현하기

화면 전환을 처리하기 위해서는 새로운 화면을 나타내는 클래스를 만들고, 현재 화면을 변경해주는 메서드를 구현해야합니다. 예를 들어, 게임 메뉴와 실제 게임 화면을 전환하는 코드를 작성해보겠습니다.

import pygame

class MenuScreen:
    def __init__(self, screen):
        self.screen = screen
        
    def handle_event(self, event):
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                return "game"
    
    def update(self):
        # 메뉴 화면 업데이트 로직
        pass
        
    def draw(self):
        # 메뉴 화면 그리기 로직
        pass

class GameScreen:
    def __init__(self, screen):
        self.screen = screen
        
    def handle_event(self, event):
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                return "menu"
    
    def update(self):
        # 게임 화면 업데이트 로직
        pass
        
    def draw(self):
        # 게임 화면 그리기 로직
        pass

# 화면 초기화
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("My Game")

# 초기 화면 설정
current_screen = MenuScreen(screen)

# 게임 루프
running = True
while running:
    # 이벤트 처리
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        else:
            next_screen = current_screen.handle_event(event)
            if next_screen:
                if next_screen == "menu":
                    current_screen = MenuScreen(screen)
                elif next_screen == "game":
                    current_screen = GameScreen(screen)
    
    # 로직 업데이트
    current_screen.update()
    
    # 화면 업데이트
    current_screen.draw()
    pygame.display.flip()

# 게임 종료
pygame.quit()

위의 예시 코드에서는 MenuScreenGameScreen 클래스를 사용하여 화면 전환을 처리합니다. 각 클래스는 handle_event, update, draw 메서드를 구현하고, 화면 전환이 일어나는 이벤트에 따라 다음 화면으로 전환됩니다.

결론

Pygame을 사용하여 화면 전환을 처리하는 방법을 알아보았습니다. 이를 응용하여 게임 개발에 활용할 수 있으며, 유저 경험을 향상시키는데 도움이 될 것입니다.

참고 자료