Menu
CoddyTech

Scintille

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

Les vraies étoiles scintillent. Ici, chaque étoile s’assombrit de temps en temps pendant une seule image, par hasard. À chaque image, chaque étoile tire un nombre entre 1 et 30, et si elle tire un 1, elle est dessinée plus sombre :

for star in stars:
    colour = (255, 255, 255)
    if random.randint(1, 30) == 1:
        colour = (110, 120, 170)
    pygame.draw.circle(screen, colour, star, 3)

colour est initialisée en blanc pour chaque étoile, et le if ne la modifie que si le résultat est 1. Une image sur 30 correspond à environ deux fois par seconde pour chaque étoile, et chaque étoile tire son propre nombre : elles scintillent donc à des moments différents. Ce léger changement irrégulier donne au ciel un aspect vivant.

Ajoute import random en haut du programme. Ici, le tirage aléatoire doit se faire dans la boucle de dessin, car le choix doit être refait à chaque image, pour chaque étoile.

challenge icon

Défi

Moyen

Faites scintiller les étoiles :

  1. Ajoutez import random en haut.
  2. Dans la boucle des étoiles, initialisez la colour de chaque étoile en blanc (255, 255, 255).
  3. Lorsque random.randint(1, 30) == 1, rendez-la plus sombre (110, 120, 170).
  4. Dessinez l’étoile avec colour.

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 = []

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.
    pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
    pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 3)

    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