타일 이미지
Coddy Pygame 여정의 게임 월드 섹션에 포함된 레슨. 35개 중 6번째.
갈색 직사각형은 벽이 어디에 있는지 보여 줍니다. 이미지를 사용하면 레벨이 장소처럼 보입니다. set_mode 다음에 각 타일 이미지를 한 번씩 불러옵니다.
block_img = pygame.image.load("assets/images/block.png").convert_alpha()
coin_img = pygame.image.load("assets/images/coin.png").convert_alpha()각 타일의 크기는 맵 타일 크기와 같은 36×36이므로 크기를 조정하지 않고도 격자에 맞습니다. 동전 이미지에는 빈 테두리가 있으므로 타일의 모서리에 블릿하면 동전이 가운데에 놓입니다.
그릴 내용을 이미지와 위치, 두 항목으로 이루어진 하나의 목록에 보관합니다. tiles.append((block_img, rect))는 한 쌍을 추가하며, 게임 루프가 모두 블릿합니다.
for image, rect in tiles:
screen.blit(image, rect)루프는 각 쌍을 image와 rect로 언패킹합니다.
챌린지
쉬움set_mode다음에assets/images/block.png를block_img에,assets/images/coin.png를coin_img에 불러오고, 각각에convert_alpha()를 적용하세요.- 게임 루프 전에
tiles라는 목록을 만드세요. 각#에 대해(block_img, pygame.Rect(col * TILE, row * TILE, TILE, TILE))쌍을 추가하고, 각C에 대해 같은 Rect를 사용하여(coin_img, ...)를 추가하세요. - 게임 루프에서 갈색과 노란색 사각형을 그리는 대신
tiles의 모든 쌍을 블릿하세요.
직접 해보기
import pygame
TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)
LEVEL = [
"###.............",
"###.............",
"..........C.....",
".........####...",
"..C.............",
".####......C....",
"..........###...",
"#....C.........#",
"###..##...###.##",
"######..########",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Tiles")
clock = pygame.time.Clock()
walls = []
coins = []
for row, line in enumerate(LEVEL):
for col, char in enumerate(line):
if char == "#":
walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
elif char == "C":
coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((140, 200, 240))
for wall in walls:
pygame.draw.rect(screen, WALL, wall)
for coin in coins:
pygame.draw.rect(screen, COIN, coin)
pygame.display.flip()
clock.tick(60)
pygame.quit()
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
게임 월드의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드