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

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

by Minkyu Lee 2024. 3. 10.

 

결과

 

개요

게임 설정에 필요한 정보를 클래스 한 곳에 모은다.

코드 이곳저곳에 설정값이 분산돼있으면 유지보수가 힘들다.

 

1. 같은 폴더내 settings.py 파일(모듈)을 생성한다.

2. Settings 클래스를 만들고 초기화에서 속성값 지정한다.

3. aliens_invasion.py에서 위 모듈 - 클래스 - 속성을 불러와 사용한다.

 

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

코드

aliens_invasion.py

import sys
import pygame
from settings import Settings # 1. 세팅 모듈 부르기

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

    def __init__(self) :
        """게임을 초기화하고 게임 자원을 만듭니다"""
        pygame.init()
        self.clock = pygame.time.Clock()
        self.settings = Settings() # 2. 세팅 인스턴스 생성
        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height)) # 3. 속성 사용
        pygame.display.set_caption("Alien Invasion")

    def run_game(self) :
        """게임의 메인 루프를 시작합니다"""
        while True :
            # 키보드와 마우스 이벤트에 응답합니다.
            for event in pygame.event.get() :
                if event.type == pygame.QUIT :
                    sys.exit()

            # 루프를 반복할 때마다 화면을 다시 그립니다.
            self.screen.fill(self.settings.bg_color) # 4. 속성 사용

            # 가장 최근에 그린 화면 표시합니다.
            pygame.display.flip()
            self.clock.tick(60)

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

 

settings.py

class Settings:
    """외계인 침공의 설정을 저장하는 클래스"""

    def __init__(self) :
        """게임 설정 초기화"""
        # 화면 설정
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230, 230, 230)

댓글