Menu
CoddyTech

Termine ton jeu

Fait partie de la section Projets du Journey Pygame de Coddy. Leçon 31 sur 31.

Passons maintenant aux étapes 3 à 5 : un défi, une fin et du texte. Rock Dodge conserve ses rochers dans une liste de Rects : un nouveau rocher toutes les 400 ms, et plusieurs à 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 qui ne contient que les rochers encore à l’écran, pour éviter que la liste ne grandisse indéfiniment.

Une chaîne state, "playing", "lost" ou "won", détermine ce que fait chaque image, comme dans Sky Runner. Et pygame.time.get_ticks() donne le nombre de millisecondes écoulées depuis le début du jeu, ce qui permet de créer un minuteur : survive 20 secondes pour gagner.

Ton jeu peut utiliser tout ce que tu as découvert au fil du parcours : un groupe de sprites à la place de la liste, des images, un son lors d’une collision, de la musique, un menu avant le jeu, un meilleur score, des pièces construites à partir de cartes textuelles.

Fais de ton jeu une création personnelle : change les couleurs, les vitesses, les règles. Puis joue-y. 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. Un élément qui se déplace tout seul.
  2. Du texte à l’écran, comme un score ou un chronomètre.
  3. Une fin : un moyen de gagner, un moyen 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 s’exécute pendant 30 secondes sans erreur et une fenêtre qui se ferme. Pour le reste, c’est à toi de choisir : formes ou images, sons, musique, états et cartes, tout convient.

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 Projets

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