Menu
CoddyTech

Gambar Ubin

Termasuk bagian Dunia Game dalam perjalanan Pygame di Coddy. Pelajaran 6 dari 35.

Persegi panjang cokelat menunjukkan letak dinding. Gambar membuat level terlihat seperti sebuah tempat. Muat setiap gambar tile satu kali, setelah set_mode:

block_img = pygame.image.load("assets/images/block.png").convert_alpha()
coin_img = pygame.image.load("assets/images/coin.png").convert_alpha()

Setiap tile berukuran 36 kali 36, sama dengan ukuran tile peta, sehingga pas dengan grid tanpa perlu mengubah skala. Gambar koin memiliki pinggiran kosong, jadi gambar koin di sudut tile agar koin berada di tengah.

Simpan semua yang akan digambar dalam satu list berisi pasangan: gambar yang mana dan di mana. tiles.append((block_img, rect)) menambahkan satu pasangan; perulangan game menggambar semuanya:

for image, rect in tiles:
    screen.blit(image, rect)

Perulangan ini membongkar setiap pasangan menjadi image dan rect.

challenge icon

Tantangan

Mudah
  1. Setelah set_mode, muat assets/images/block.png ke dalam block_img dan assets/images/coin.png ke dalam coin_img, masing-masing dengan convert_alpha().
  2. Sebelum perulangan game, buat list bernama tiles: untuk setiap #, gunakan pasangan (block_img, pygame.Rect(col * TILE, row * TILE, TILE, TILE)); untuk setiap C, gunakan (coin_img, ...) dengan Rect yang sama.
  3. Dalam perulangan game, blit setiap pasangan di tiles, bukan menggambar persegi panjang berwarna cokelat dan kuning.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dunia Game

Latihan sendiri: Playground Pygame