Baris dan Kolom
Termasuk bagian Dunia Game dalam perjalanan Pygame di Coddy. Pelajaran 2 dari 35.
Satu perulangan bergerak sepanjang satu baris. Perulangan kedua mengelilinginya dan bergerak ke bawah menyusuri baris-baris, sehingga keduanya mengunjungi setiap tile pada peta. Perulangan luar memberikan setiap string dari LEVEL sebagai line, beserta nomor barisnya; perulangan dalam menelusuri karakter pada baris tersebut.
walls = []
for row, line in enumerate(LEVEL):
for col, char in enumerate(line):
if char == "#":
walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))Buat dinding sekali sebelum perulangan game, sebagai list berisi Rect. Peta tidak berubah saat kamu bermain, dan Rect adalah objek yang nantinya akan kamu gunakan untuk menguji tabrakan. Dalam perulangan game, gambar setiap dinding:
for wall in walls:
pygame.draw.rect(screen, WALL, wall)row berasal dari perulangan luar, jadi menentukan y tile; col dari perulangan dalam menentukan x. Jika tertukar, level akan miring ke samping.
Tantangan
Sedang- Sebelum perulangan game, buat list bernama
walls. - Ulangi setiap baris
LEVELdan setiap karakter di dalamnya dengan dua perulanganenumerate. Untuk setiap#, tambahkanpygame.Rect(col * TILE, row * TILE, TILE, TILE)kewalls. - Di dalam perulangan game, gambar setiap Rect di
wallsdengan warna cokelatWALL, bukan hanya baris paling bawah.
Coba sendiri
import pygame
TILE = 36
WALL = (120, 90, 60)
PLAYER = (80, 200, 120)
LEVEL = [
"################",
"#..............#",
"#....####......#",
"#..............#",
"#.........##...#",
"#..##.....##...#",
"#..##..........#",
"#.........###..#",
"#..............#",
"####..####..####",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
clock = pygame.time.Clock()
player = pygame.Rect(40, 40, 28, 28)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 4
if keys[pygame.K_RIGHT]:
player.x += 4
if keys[pygame.K_UP]:
player.y -= 4
if keys[pygame.K_DOWN]:
player.y += 4
screen.fill((30, 30, 46))
for col, char in enumerate(LEVEL[9]):
if char == "#":
pygame.draw.rect(screen, WALL, (col * TILE, 9 * TILE, TILE, TILE))
pygame.draw.rect(screen, PLAYER, player)
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