Menu
CoddyTech

Bangun Gua

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

Moss Caves adalah game platformer milikmu sendiri: berlari melewati gua berlumut, mengumpulkan koin, melompati paku dan lubang, menginjak blob, menemukan kunci, membuka pintu, lalu mencapai bendera. Setiap langkah menambahkan satu bagian, yang dibangun dari hasil kerjamu di bagian ini.

Seluruh level adalah peta di starter, dengan lebar 64 kolom. # adalah tanah, P adalah titik awal, dan huruf lainnya adalah hal-hal yang akan kamu tambahkan: C koin, ^ paku, E blob, K kunci, D pintu, F bendera. Sebelum suatu langkah membaca sebuah huruf, ubinnya tetap kosong.

Pertama, bangun tanahnya. Satu kali penelusuran pada peta mengisi walls dengan Rect untuk tabrakan dan tiles dengan pasangan (image, Rect) untuk menggambar, memilih rumput, tanah, atau ubin tepi dengan solid(), seperti di bab Tiles:

rect = pygame.Rect(col * TILE, row * TILE, TILE, TILE)
if char == "#":
    # pilih image dengan solid(), seperti sebelumnya
    walls.append(rect)
    tiles.append((image, rect))
elif char == "P":
    start = rect.midbottom

Pemain berdiri di start, titik tengah bawah ubin P.

challenge icon

Tantangan

Sedang
  1. Sebelum perulangan game, buat walls dan tiles, lalu telusuri peta. Untuk setiap #, pilih dirt_img, grass_left_img, grass_right_img atau grass_img menggunakan solid() seperti pada Edge Tiles, lalu tambahkan Rect ke walls dan pasangannya ke tiles.
  2. Untuk P, tetapkan start ke midbottom tile.
  3. Buat player = player_img.get_rect(midbottom=start).
  4. Dalam perulangan game, setelah background, blit setiap tile pada Rect-nya, lalu player.

Coba sendiri

import pygame

TILE = 36
WIDTH, HEIGHT = 576, 360

LEVEL = [
    "................................................................",
    "................................................................",
    "................................................................",
    "................................................................",
    "#..............................................................#",
    "#....................C.........................#####...........#",
    "#......CC...C................CC.....CC.........#####.....CC....#",
    "#....................#.........................D...............#",
    "#.P.........#...E....#...^.......K......E......D.C....^......F.#",
    "#######..####################..##########################..#####",
]

pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Moss Caves")
clock = pygame.time.Clock()


def load(name):
    return pygame.image.load("assets/images/" + name).convert_alpha()


background = pygame.image.load("assets/backgrounds/forest.png").convert_alpha()
grass_img = load("grass.png")
grass_left_img = load("grass_left.png")
grass_right_img = load("grass_right.png")
dirt_img = load("dirt.png")
player_img = load("player.png")


def solid(row, col):
    if row < 0 or row >= len(LEVEL) or col < 0 or col >= len(LEVEL[0]):
        return False
    return LEVEL[row][col] == "#"


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    for y in range(0, HEIGHT, 72):
        for x in range(0, WIDTH, 72):
            screen.blit(background, (x, y))
    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