Menu
CoddyTech

Costruisci le grotte

Fa parte della sezione Mondi del percorso Pygame di Coddy. Lezione 28 di 35.

Moss Caves è un platform tutto tuo: corri in una grotta ricoperta di muschio, raccogli monete, salta sopra spuntoni e fosse, schiaccia blob, trova la chiave, apri la porta e raggiungi la bandiera. Ogni passaggio aggiunge una parte, costruita a partire da ciò che hai realizzato in questa sezione.

L'intero livello è la mappa fornita nel codice iniziale, larga 64 colonne. # indica il terreno, P il punto di partenza e le altre lettere indicano gli elementi che aggiungerai: C monete, ^ spuntoni, E blob, K la chiave, D la porta, F la bandiera. Finché un passaggio non legge una lettera, la relativa casella resta vuota.

Per prima cosa, costruisci il terreno. Un passaggio sull'intera mappa riempie walls con Rect per le collisioni e tiles con coppie (image, Rect) per il disegno, scegliendo erba, terra o una casella di bordo con solid(), come nel capitolo Tiles:

rect = pygame.Rect(col * TILE, row * TILE, TILE, TILE)
if char == "#":
    # scegli l'immagine con solid(), come prima
    walls.append(rect)
    tiles.append((image, rect))
elif char == "P":
    start = rect.midbottom

Il giocatore si trova su start, al centro del bordo inferiore della casella P.

challenge icon

Sfida

Medio
  1. Prima del ciclo di gioco, crea walls e tiles, poi scorri la mappa. Per ogni #, scegli dirt_img, grass_left_img, grass_right_img oppure grass_img usando solid(), come in Edge Tiles, e aggiungi il Rect a walls e la coppia a tiles.
  2. Per P, imposta start sul midbottom della casella.
  3. Crea player = player_img.get_rect(midbottom=start).
  4. Nel ciclo di gioco, dopo lo sfondo, esegui il blit di ogni casella nella sua Rect, poi del giocatore.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Mondi

Esercitati da solo: Playground Pygame