Menu
CoddyTech

Où commence le joueur

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

Un niveau détermine l’endroit où le joueur commence : ajoute donc aussi un P à la carte. Pendant que les boucles parcourent la carte, la case P indique la position initiale du joueur.

elif char == "P":
    player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28)

Le joueur est un carré de 28 pixels de côté ; il commence donc à (36 - 28) / 2 = 4 pixels du coin de la case, au milieu de celle-ci. Désormais, déplacer le P dans le texte déplace le point de départ : aucun calcul à faire.

La boucle s’exécute avant la boucle de jeu, donc player existe lorsque la boucle de jeu le déplace. Assure-toi que rien, après les boucles, ne redéfinit player, sinon cette ligne ultérieure l’emportera.

challenge icon

Défi

Facile

La carte contient maintenant un P. Le code de départ place le joueur à une position fixe (40, 40).

  1. Dans les boucles de la carte, pour P, crée player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28).
  2. Supprime la ligne qui place le joueur à (40, 40).

Essayez vous-même

import pygame

TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)
PLAYER = (80, 200, 120)

LEVEL = [
    "################",
    "#..............#",
    "#.C..####...C..#",
    "#..............#",
    "#....C....##...#",
    "#..##.....##.C.#",
    "#..##..P.......#",
    "#.C.......###..#",
    "#..............#",
    "####..####..####",
]

pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
clock = pygame.time.Clock()

walls = []
coins = []
for row, line in enumerate(LEVEL):
    for col, char in enumerate(line):
        if char == "#":
            walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
        elif char == "C":
            coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))
player = pygame.Rect(40, 40, 28, 28)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player.x -= 4
    if keys[pygame.K_RIGHT]:
        player.x += 4
    if keys[pygame.K_UP]:
        player.y -= 4
    if keys[pygame.K_DOWN]:
        player.y += 4

    screen.fill((30, 30, 46))
    for wall in walls:
        pygame.draw.rect(screen, WALL, wall)
    for coin in coins:
        pygame.draw.rect(screen, COIN, coin)
    pygame.draw.rect(screen, PLAYER, player)
    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