결과
개요
화면에 우주선을 그린다.
1. ship.py 이름으로 모듈을 별도로 만든다.
2. 화면을 속성으로 할당하여, 우주선 이미지를 화면 중앙에 배치한다. (midbottom)
3. 파이게임은 게임 요소들을 모두 사각형으로 처리해 효율적이다. (rect)
+ 챕터 12.4.2까지의 내용이다.
코드
alien_invasion.py
import sys
import pygame
from settings import Settings
from ship import Ship # 0. 모듈 불러오기
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) # 1. Ship 인스턴스 생성
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)
self.ship.blitme() # 2. 우주선 그리기
# 가장 최근에 그린 화면 표시합니다.
pygame.display.flip()
self.clock.tick(60)
if __name__ == '__main__' :
ai = AlienInvasion()
ai.run_game()
ship.py
import pygame
class Ship :
"""우주선을 관리하는 클래스"""
def __init__(self, ai_game) : # AlienInvasion 클래스에서 정의하는 모든 것에 접근 가능
'''우주선 초기화, 시작 위치 설정'''
self.screen = ai_game.screen # 화면을 속성으로 할당
self.screen_rect = ai_game.screen.get_rect() # 메서드를 사용
#우주선 이미지를 불러오고 사각형을 가져옵니다.
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect() # 우주선 rect 속성 가져오기
#우주선의 초기 위치는 화면 하단 중앙입니다.
self.rect.midbottom = self.screen_rect.midbottom # 우주선 위치 설정
def blitme(self) :
'''우주선을 현재 위치에 그립니다'''
self.screen.blit(self.image, self.rect) #지정된 위치에 이미지 그리기
'파이썬 (Python) > 파이썬 크래시 코스 - 에릭 마테스' 카테고리의 다른 글
[Python] 실습편 - 외계인 침공 : 불을 뿜는 우주선 5 (0) | 2024.03.22 |
---|---|
[Python] 실습편 - 외계인 침공 : 불을 뿜는 우주선 4 (0) | 2024.03.17 |
[Python] 실습편 - 외계인 침공 : 불을 뿜는 우주선 2 (0) | 2024.03.10 |
[Python] 실습편 - 외계인 침공 : 불을 뿜는 우주선 1 (0) | 2024.03.10 |
댓글