Menu
CoddyTech

배경 타일로 채우기

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

단색은 밋밋한 하늘이 됩니다. assets/backgrounds/sky.png는 반복하도록 만들어진 72×72 크기의 그림입니다. 복사본을 나란히 놓으면 가장자리가 이음새 없이 맞닿습니다. 작은 그림 하나를 복사해 창을 덮는 것을 타일링이라고 합니다.

두 개의 루프를 사용하면 격자의 각 행을 차례로 처리하며 모든 왼쪽 위 모서리를 얻을 수 있습니다.

for x in range(0, 640, 72):
    for y in range(0, 480, 72):
        screen.blit(tile, (x, y))

range(0, 640, 72)는 0, 72, 144 등으로 이어져 576까지입니다. 576 위치의 복사본은 648까지 닿아 가장자리를 넘어갑니다. pygame은 창 안에 있는 부분을 그리며 나머지는 건너뛰므로, 마지막 열은 가장자리에서 깔끔하게 잘립니다.

타일이 창 전체를 덮으므로 screen.fill을 대신합니다. 타일을 먼저 그린 다음 나머지 모든 것을 그 위에 그리세요. 이 그림에는 투명한 픽셀이 없으므로, 단색 이미지용 convert_alpha() 버전인 .convert()로 불러오세요.

challenge icon

챌린지

쉬움
  1. set_mode 다음에 assets/backgrounds/sky.png를 .convert()로 불러와 tile이라는 변수에 저장합니다.
  2. screen.fill(...)을 두 개의 반복문으로 바꿔 tile을 모든 (x, y) 위치에 블릿합니다. x는 range(0, 640, 72), y는 range(0, 480, 72)입니다.
  3. 타일을 그린 후에도 우주선을 그립니다.

직접 해보기

import pygame

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

ship = pygame.image.load("assets/images/ship.png").convert_alpha()

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

    screen.fill((20, 22, 40))
    screen.blit(ship, (288, 360))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

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

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