Menu
CoddyTech

순찰선

Coddy Pygame 여정의 스프라이트와 이미지 섹션에 포함된 레슨. 36개 중 29번째.

이제 게임 전체를 만들어 봅시다: Star Patrol. 적 함선들이 위쪽에서 파도처럼 날아옵니다. 플레이어의 함선은 창 아래쪽을 순찰하며 좌우로 움직이고 레이저를 위로 발사합니다. 모든 적의 파도를 물리치면 승리합니다. 적 세 대를 지나가게 두거나 적과 충돌하면 게임이 끝납니다.

게임의 모든 객체는 스프라이트입니다. 플레이어, 플레이어의 레이저, 적과 적의 폭발이 모두 스프라이트입니다. 4장에서처럼 플레이어를 먼저 만듭니다.

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = ship_image
        self.rect = self.image.get_rect(midbottom=(320, 470))

창을 만든 다음 ship_image를 한 번 불러옵니다. update는 화살표 키로 Rect를 움직이고 창 안에 있도록 유지합니다. 메인 루프에서 player.update()를 호출하고 함선을 그립니다.

이 장에서는 같은 프로그램을 차근차근 확장하므로, 과제에서 지정한 이름을 그대로 사용하세요. 검사 프로그램이 그 이름으로 게임의 각 부분을 찾습니다.

challenge icon

챌린지

중급
  1. assets/images/ship.png을 ship_image에 불러오세요.
  2. class Player(pygame.sprite.Sprite)를 작성하세요. 이미지로 ship_image를 사용하고, 아래쪽 가운데가 (320, 470)에 오도록 Rect를 설정하세요. 또한 왼쪽 및 오른쪽 키로 프레임마다 6픽셀씩 이동시키고 창 안에 머물도록 제한하는 update를 작성하세요.
  3. player = Player()를 만드세요. 매 프레임 player.update()를 호출하고, 화면을 채운 다음 player.rect 위치에 player.image를 blit하세요.

직접 해보기

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((12, 14, 30))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

스프라이트와 이미지의 모든 레슨

직접 연습해 보세요: Pygame 플레이그라운드