배경 타일로 채우기
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()로 불러오세요.
챌린지
쉬움set_mode다음에assets/backgrounds/sky.png를.convert()로 불러와tile이라는 변수에 저장합니다.screen.fill(...)을 두 개의 반복문으로 바꿔tile을 모든(x, y)위치에 블릿합니다. x는range(0, 640, 72), y는range(0, 480, 72)입니다.- 타일을 그린 후에도 우주선을 그립니다.
직접 해보기
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 플레이그라운드