Menu
CoddyTech

Construire les grottes

Fait partie de la section Les mondes du Journey Pygame de Coddy. Leçon 28 sur 35.

Moss Caves est un jeu de plateforme qui vous est propre : parcourez une grotte moussue, ramassez des pièces, sautez par-dessus les pics et les fosses, écrasez les blobs, trouvez la clé, ouvrez la porte et atteignez le drapeau. Chaque étape ajoute un élément, construit à partir de ce que vous avez créé dans cette section.

Tout le niveau est la carte du fichier de départ, large de 64 colonnes. # représente le sol, P le point de départ, et les autres lettres représentent les éléments que vous allez ajouter : C les pièces, ^ les pics, E les blobs, K la clé, D la porte, F le drapeau. Tant qu’une étape ne lit pas une lettre, sa case reste vide.

Commencez par construire le sol. Un passage sur la carte remplit walls avec des Rect pour les collisions et tiles avec des paires (image, Rect) pour l’affichage, en choisissant de l’herbe, de la terre ou une tuile de bord avec solid(), comme dans le chapitre sur les tuiles :

rect = pygame.Rect(col * TILE, row * TILE, TILE, TILE)
if char == "#":
    # choisir l’image avec solid(), comme précédemment
    walls.append(rect)
    tiles.append((image, rect))
elif char == "P":
    start = rect.midbottom

Le joueur se tient sur start, au milieu du bord inférieur de la tuile P.

challenge icon

Défi

Moyen
  1. Avant la boucle de jeu, crée walls et tiles, puis parcours la carte. Pour chaque #, choisis dirt_img, grass_left_img, grass_right_img ou grass_img avec solid(), comme dans Edge Tiles, et ajoute le Rect à walls et la paire à tiles.
  2. Pour P, définis start sur le midbottom de la tuile.
  3. Crée player = player_img.get_rect(midbottom=start).
  4. Dans la boucle de jeu, après l’arrière-plan, blit chaque tuile à son Rect, puis le joueur.

Essayez vous-même

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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les mondes

Entraînez-vous par vous-même : Playground Pygame