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.midbottomIl giocatore si trova su start, al centro del bordo inferiore della casella P.
Sfida
Medio- Prima del ciclo di gioco, crea
wallsetiles, poi scorri la mappa. Per ogni#, sceglidirt_img,grass_left_img,grass_right_imgoppuregrass_imgusandosolid(), come in Edge Tiles, e aggiungi il Rect awallse la coppia atiles. - Per
P, impostastartsulmidbottomdella casella. - Crea
player = player_img.get_rect(midbottom=start). - 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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Mondi
1Mappe dal testo
Un livello in testoRighe e colonneLettere con significatoDove inizia il giocatoreUna schermata alla volta4Collisioni con le piattaforme
Muri a sinistra e a destraAtterrare sulle piattaformeBattere la testaCadere fuori dal livelloUn asse alla volta7Grotte di muschio
Costruisci le grotteCorri e salta5Una telecamera a scorrimento
Un offset della telecameraSegui il giocatoreMantieni la telecamera all'internoParallasseEsercitati da solo: Playground Pygame