Menu
CoddyTech

Terminez votre jeu

Leçon 40 sur 40 du cours Créez des jeux avec Pygame de Coddy.

Passons maintenant aux étapes 3 à 5 : un défi, une fin et du texte. Rock Dodge utilise une idée que tu n’as pas encore vue, une liste de Rects : un nouveau rocher toutes les 400 ms, avec plusieurs rochers à l’écran en même temps.

rocks = []

# lors d'un événement du minuteur NEW_ROCK :
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))

# à chaque image :
for rock in rocks:
    rock.y += 5
    if rock.colliderect(player):
        state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]

La dernière ligne est une compréhension de liste : une nouvelle liste contenant uniquement les rochers encore à l’écran, afin que la liste ne grandisse pas indéfiniment.

Une chaîne state, "playing", "lost" ou "won", remplace plusieurs indicateurs. Et pygame.time.get_ticks() renvoie le nombre de millisecondes écoulées depuis le démarrage du jeu, ce qui permet de créer un chronomètre : survis 20 secondes pour gagner.

Personnalise ton jeu : change les couleurs, les vitesses, les règles. Puis joue. S’il est trop difficile de gagner ou trop facile de perdre, modifie les nombres jusqu’à ce que le jeu soit amusant.

challenge icon

Défi

Facile

Termine ton jeu pour qu’il comporte :

  1. Quelque chose qui se déplace tout seul.
  2. Du texte à l’écran, comme un score ou un minuteur.
  3. Une fin : une façon de gagner, une façon de perdre, ou les deux.

Les vérifications recherchent du texte, un élément qui se déplace sans qu’aucune touche ne soit maintenue, un jeu qui fonctionne pendant 30 secondes sans erreur et une fenêtre qui se ferme. Tout le reste dépend de toi.

Essayez vous-même

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()

player = pygame.Rect(220, 320, 40, 20)

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 -= 7
    if keys[pygame.K_RIGHT]:
        player.x += 7
    player.clamp_ip(screen.get_rect())

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), 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 Créez des jeux avec Pygame

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