순찰선
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()를 호출하고 함선을 그립니다.
이 장에서는 같은 프로그램을 차근차근 확장하므로, 과제에서 지정한 이름을 그대로 사용하세요. 검사 프로그램이 그 이름으로 게임의 각 부분을 찾습니다.
챌린지
중급assets/images/ship.png을ship_image에 불러오세요.class Player(pygame.sprite.Sprite)를 작성하세요. 이미지로ship_image를 사용하고, 아래쪽 가운데가(320, 470)에 오도록 Rect를 설정하세요. 또한 왼쪽 및 오른쪽 키로 프레임마다 6픽셀씩 이동시키고 창 안에 머물도록 제한하는update를 작성하세요.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 플레이그라운드