Menu
CoddyTech

Nombres aléatoires

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

Le module random de Python choisit des nombres au hasard. Importez-le en haut du programme, au-dessus ou au-dessous de import pygame :

import random

random.randint(a, b) donne un nombre entier entre a et b, bornes incluses. random.choice(items) choisit un élément d’une liste :

x = random.randint(20, 620)
size = random.choice([3, 4, 5])

À chaque appel, un nouveau choix est effectué : appelez donc la fonction au moment où vous avez besoin d’une nouvelle valeur. Une étoile placée avec la barre d’espace :

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    x = random.randint(20, 620)
    y = random.randint(60, 300)
    stars.append((x, y))

Notez les doubles parenthèses dans stars.append((x, y)) : append prend un seul élément, et cet élément est le tuple (x, y). Si vous choisissez plutôt x et y une seule fois avant la boucle de jeu, toutes les étoiles apparaîtront au même endroit.

challenge icon

Défi

Moyen

Laisse la barre d’espace disperser des étoiles :

  1. Ajoute import random en haut.
  2. Lorsqu’un événement KEYDOWN pour K_SPACE arrive, choisis x = random.randint(20, 620) et y = random.randint(60, 300), puis ajoute (x, y) à stars.
  3. Les clics continuent d’ajouter des étoiles comme avant.

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 de 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:
            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()
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 Python dans une fenêtre de jeu

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