본문 바로가기

코딩/파이썬 pygame

파이썬 게임 004. 클래스 기반 pygame 프로그램의 기본 구조

 

Pygame 프로그램 개발 시작 단계에서 클래스를 기반으로 프로그램의 구조를 구성하면 <코드 1>과 같다.

 

<코드 1>

# python 3.9.6
# pygame 2.0.1

import pygame


class GameApp:
    def __init__(self):
        pygame.init()
        self.screen = pygame.display.set_mode((640, 480))
        self.running = True

    def game_input(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT \
                    or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                self.running = False
                break
        if not self.running:
            return

    def game_process(self):
        pass

    def display_update(self):
        pass

    def run(self):
        while self.running:
            self.game_input()
            if not self.running:
                continue
            self.game_process()
            self.display_update()

        pygame.quit()


if __name__ == '__main__':
    GameApp().run()

 

 

GameApp 클래스의 인스턴스를 생성함과 동시에 run 메서드를 호출한다.

 

GameApp().run()

 

GameApp 클래스의 run() 메서드는 인스턴스 변수 running의 값이 True이면, game_input(), game_process()와 display_update() 메서드를 무한, 반복적으로 실행한다.

 

while self.running:
    self.game_input()
    if not self.running:
        continue
    self.game_process()
    self.display_update()

 

game_input() 메서드에서 프로그램 종료를 의미하는 이벤트가 발생하면 인스턴스 변수 running의 값을 False로 바꾼다.

 

for event in pygame.event.get():
    if event.type == pygame.QUIT \
            or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
        self.running = False
        break