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.
Tantangan
Mudah- Setelah
set_mode, muatassets/images/block.pngke dalamblock_imgdanassets/images/coin.pngke dalamcoin_img, masing-masing denganconvert_alpha(). - Sebelum perulangan game, buat list bernama
tiles: untuk setiap#, gunakan pasangan(block_img, pygame.Rect(col * TILE, row * TILE, TILE, TILE)); untuk setiapC, gunakan(coin_img, ...)dengan Rect yang sama. - 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()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dunia Game
1Peta dari Teks
Level dalam TeksBaris dan KolomHuruf yang Memiliki MaknaTempat Pemain MemulaiSatu Layar Setiap KaliLatihan sendiri: Playground Pygame