Construye las cuevas
Parte de la sección Mundos del Journey de Pygame de Coddy. Lección 28 de 35.
Moss Caves es un juego de plataformas propio: corre por una cueva cubierta de musgo, recoge monedas, salta sobre pinchos y hoyos, aplasta blobs, encuentra la llave, abre la puerta y llega a la bandera. Cada paso añade una parte, construida a partir de lo que hiciste en esta sección.
Todo el nivel es el mapa del proyecto inicial, de 64 columnas de ancho. # es suelo, P el inicio y las otras letras representan elementos que añadirás: C monedas, ^ pinchos, E blobs, K la llave, D la puerta, F la bandera. Hasta que un paso lea una letra, su casilla permanece vacía.
Primero, construye el suelo. Una pasada por el mapa llena walls con Rects para las colisiones y tiles con pares (image, Rect) para el dibujo, eligiendo césped, tierra o una casilla de borde con solid(), como en el capítulo de Tiles:
rect = pygame.Rect(col * TILE, row * TILE, TILE, TILE)
if char == "#":
# elige la imagen con solid(), como antes
walls.append(rect)
tiles.append((image, rect))
elif char == "P":
start = rect.midbottomEl jugador se sitúa en start, en el centro inferior de la casilla P.
Desafío
Intermedio- Antes del bucle del juego, crea
wallsytiles, y luego recorre el mapa. Para cada#, eligedirt_img,grass_left_img,grass_right_imgograss_imgusandosolid(), como en Bordes de losetas, y añade el Rect awallsy el par atiles. - Para
P, establecestarten elmidbottomde la loseta. - Crea
player = player_img.get_rect(midbottom=start). - En el bucle del juego, después del fondo, blitea cada loseta en su Rect y luego al jugador.
Pruébalo tú mismo
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()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Mundos
1Mapas a partir de texto
Un nivel en textoFilas y columnasLetras con significadoDónde empieza el jugadorUna pantalla a la vez4Colisiones con plataformas
Paredes a izquierda y derechaAterrizar en plataformasGolpearse la cabezaCaer fuera del nivelUn eje a la vez7Cuevas de musgo
Construye las cuevasCorre y salta5Una cámara con desplazamiento
Un desplazamiento de cámaraSeguir al jugadorMantener la cámara dentroParalajePractica por tu cuenta: Playground de Pygame