Menu
CoddyTech

타일 이미지

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로 언패킹합니다.

challenge icon

챌린지

쉬움
  1. set_mode 다음에 assets/images/block.png를 block_img에, assets/images/coin.png를 coin_img에 불러오고, 각각에 convert_alpha()를 적용하세요.
  2. 게임 루프 전에 tiles라는 목록을 만드세요. 각 #에 대해 (block_img, pygame.Rect(col * TILE, row * TILE, TILE, TILE)) 쌍을 추가하고, 각 C에 대해 같은 Rect를 사용하여 (coin_img, ...)를 추가하세요.
  3. 게임 루프에서 갈색과 노란색 사각형을 그리는 대신 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()
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

게임 월드의 모든 레슨

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