본문 바로가기
파이썬 (Python)/파이썬 크래시 코스 - 에릭 마테스

[Python] 실습편 - 외계인 침공 : 불을 뿜는 우주선 4

by Minkyu Lee 2024. 3. 17.

 

개요

run_game 메서드의 코드가 길어지고 있다.

 

이를 해결하기 위해, 보조 메서드 두 개로 분리한다.

보조 메서드란 클래스 내부에서만 사용하는 메서드를 일컫는다.

보조 메서드는 구분을 위해 맨 앞에 _를 붙인다.

 

이렇게 기존 코드를 단순화는 것을 리팩터링이라고 한다.

 

+ 챕터 12.5.2 까지의 내용이다.

코드

alien_invasion.py

import sys
import pygame
from settings import Settings
from ship import Ship

class AlienInvasion :
    """게임 자원과 동작을 전체적으로 관리하는 클래스"""

    def __init__(self) :
        """게임을 초기화하고 게임 자원을 만듭니다"""
        pygame.init()
        self.clock = pygame.time.Clock()
        self.settings = Settings()
        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height))
        pygame.display.set_caption("Alien Invasion")

        self.ship = Ship(self)

    def run_game(self) :
        """게임의 메인 루프를 시작합니다"""
        while True :
            self._check_event() # 3. 보조 메서드 사용
            self._update_screen() # 4. 보조 메서드 사용
            self.clock.tick(60)

    def _check_event(self) : # 1. 보조 메서드 정의
        '''키 입력과 마우스 이벤트에 응답합니다.'''
        for event in pygame.event.get() :
            if event.type == pygame.QUIT :
                sys.exit()

    def _update_screen(self) : # 2. 보조 메서드 정의
        '''화면의 이미지를 업데이트하고 화면을 새로 그립니다.'''
        self.screen.fill(self.settings.bg_color)
        self.ship.blitme()

        pygame.display.flip()

if __name__ == '__main__' :
    ai = AlienInvasion()
    ai.run_game()
 

댓글