Menu
CoddyTech

Compter avec len

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

len(stars) indique le nombre d’éléments que contient la liste. Une liste vide a une longueur de 0. Utilise-la pour afficher un décompte :

text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))

Une f-string peut contenir n’importe quelle expression entre ses accolades, y compris un appel.

len peut aussi définir une limite. Ajoute une étoile uniquement s’il reste de la place :

if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
    stars.append(event.pos)

Une fois que la liste contient 10 étoiles, la condition est fausse : les clics ne font donc rien. Le décompte à l’écran et la limite utilisent la même liste, ils concordent donc toujours.

La limite se trouve dans la boucle d’événements, reliée au test du clic par and : l’ajout ne s’exécute que si l’événement est un clic et qu’il reste de la place. len fonctionne aussi sur les chaînes : len("Night") vaut 5.

challenge icon

Défi

Moyen

Compte les étoiles et arrête-toi à dix :

  1. Dans la partie de configuration, crée font = pygame.font.Font(None, 36).
  2. Dans la partie dessin, affiche f"Stars: {len(stars)}" en (230, 230, 240) à (20, 20).
  3. Ajoute une étoile lors d’un clic uniquement tant que len(stars) < 10.

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()

# Préparez les éléments ici, avant la boucle du jeu.
stars = []

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

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

    screen.fill((20, 24, 48))
    # Dessinez ici, après avoir rempli l’écran.
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 5)

    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