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.midbottomLe joueur se tient sur start, au milieu du bord inférieur de la tuile P.
Défi
Moyen- Avant la boucle de jeu, crée
wallsettiles, puis parcours la carte. Pour chaque#, choisisdirt_img,grass_left_img,grass_right_imgougrass_imgavecsolid(), comme dans Edge Tiles, et ajoute le Rect àwallset la paire àtiles. - Pour
P, définisstartsur lemidbottomde la tuile. - Crée
player = player_img.get_rect(midbottom=start). - 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()
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
1Des cartes à partir de texte
Un niveau en texteLignes et colonnesDes lettres qui ont un sensOù commence le joueurUn écran à la fois4Collisions avec les plateformes
Murs à gauche et à droiteAtterrir sur les plateformesSe cogner la têteTomber hors du niveauUn axe à la fois7Grottes moussues
Construire les grottesCourir et sauterEntraînez-vous par vous-même : Playground Pygame