Menu
CoddyTech

Tempat Pemain Memulai

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

Sebuah level menentukan tempat player mulai, jadi tambahkan juga satu P ke dalam peta. Saat perulangan membaca peta, tile P menentukan posisi awal player.

elif char == "P":
    player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28)

Player berbentuk persegi dengan sisi 28 piksel, jadi posisinya dimulai 4 piksel dari sudut tile, tepat di tengah tile, dengan perhitungan (36 - 28) / 2 = 4. Sekarang, memindahkan P di teks akan mengubah titik mulai, jadi kamu tidak perlu menghitung angka.

Perulangan ini berjalan sebelum game loop, jadi player sudah tersedia saat game loop menggerakkannya. Pastikan tidak ada kode setelah perulangan yang mengatur ulang player, atau nilai dari baris berikutnya akan menggantikannya.

challenge icon

Tantangan

Mudah

Sekarang peta memiliki P. Kode awal menempatkan pemain di (40, 40) yang tetap.

  1. Di dalam perulangan peta, untuk P, buat player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28).
  2. Hapus baris yang menempatkan pemain di (40, 40).

Coba sendiri

import pygame

TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)
PLAYER = (80, 200, 120)

LEVEL = [
    "################",
    "#..............#",
    "#.C..####...C..#",
    "#..............#",
    "#....C....##...#",
    "#..##.....##.C.#",
    "#..##..P.......#",
    "#.C.......###..#",
    "#..............#",
    "####..####..####",
]

pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
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))
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 wall in walls:
        pygame.draw.rect(screen, WALL, wall)
    for coin in coins:
        pygame.draw.rect(screen, COIN, coin)
    pygame.draw.rect(screen, PLAYER, player)
    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