Menu
CoddyTech

Supprimer une étoile

Fait partie de la section Python dans une fenêtre de jeu du Journey Pygame de Coddy. Leçon 27 sur 32.

Les listes rétrécissent aussi. stars.pop() supprime le dernier élément, le plus récent. stars.pop(0) supprime le premier. stars.remove(item) supprime le premier élément égal à item.

Retirer un élément d’une liste vide provoque une erreur, IndexError: pop from empty list, et le programme s’arrête. Vérifie d’abord la longueur :

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    if len(stars) > 0:
        stars.pop()

Note les deux if. Le premier sélectionne l’appui sur Espace parmi les événements, le second vérifie qu’il y a une étoile à supprimer.

Dans un if, une liste vide est considérée comme False et une liste contenant des éléments comme True : if stars: signifie donc la même chose que if len(stars) > 0:.

challenge icon

Défi

Moyen

Fais en sorte que la barre d’espace retire une étoile :

  1. Dans la boucle d’événements, lorsqu’un événement KEYDOWN pour K_SPACE arrive, retire la dernière étoile avec stars.pop().
  2. Ne retire une étoile que si la liste n’est pas vide, afin qu’appuyer sur la barre d’espace sans étoile ne fasse rien.

Essayez vous-même

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Initialisez les éléments ici, avant la boucle du jeu.
stars = []
font = pygame.font.Font(None, 36)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
            stars.append(event.pos)

    # Modifiez les éléments ici, une fois par image.

    screen.fill((20, 24, 48))
    # Dessinez ici, après le remplissage.
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 5)
    text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
    screen.blit(text, (20, 20))

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Toutes les leçons de Python dans une fenêtre de jeu

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