Nous allons voir les couleurs, les événements et les rectangles dans un petit économiseur d’écran interactif, sans aucune prétention, qui servira seulement pour nous amuser et pour affiner notre technique. La nouvelle entrée de cette série est la fonction pygame.time.wait(delay), qui nous sert pour faire écouler un certain nombre de millisecondes sans rien faire. Nous traiterons les événements relatifs à la pression des touches: R (carrées aux hasard rouges), B, V, E (tous les couleurs), G (gris) et D (pour effacer le tableau).
Exercice 1: Modifiez le programme pour gérer les touches “+” et “-” de la façon suivante. Le délai entre la création d’un carre e le prochain est de 10 millisecondes. Avec la pression de la touche “+” ça augmentera de 10 millisecondes, jusqu’au maximum de 1 seconde; avec la touche “-” ça diminuera de 10 millisecondes, jusqu’au minimum de 10 millisecondes.
Exercise 2: En lieux de carres, générez des rectangles avec la largeur et la longueur aux hasards entre TAILLE_MIN et TAILLE_MAX.
# Importons la librairie pygame import pygame # Importons randint from random import randint # Pour les constantes de pygame from pygame.locals import * # On determine la taille minimle et maximale d'un coté du carré TAILLE_MIN = 5 TAILLE_MAX = 100 # Les coordonnées du centre varieront entre 600 et 800 X_MAX = 800 Y_MAX = 600 # Les valeurs RGB varient entre 0 et 255 COUL_MAX = 255 # Si on utilise des rouges, la variable booleenne rouges est True, # cela vaut aussi pour les autres couleurs rouges = True bleues = True verts = True rouge = 0 vert = 0 bleue = 0 # On joue avec les trois couleurs trois_couleurs = True # On Joue avec une echelle des gris gris = False # Initialisons la plateforme de jeux pygame.init() # creeons une fenetre de jeux gameDisplay = pygame.display.set_mode((800, 600)) # Notre titre pour le jeux... pygame.display.set_caption("Un Screensaver avec des carrés!") # Mettons-la à jour (visualizons-la) pygame.display.update() # Condition de sortie sortieDuJeux=False # Boucle de gestion des évenements # La réference pour les evenements est ici: https://www.pygame.org/docs/ref/event.html while not sortieDuJeux : # On genere des entiers, aux hasard... rouge = randint (0, COUL_MAX) vert = randint (0, COUL_MAX) bleue = randint (0, COUL_MAX) # Nous generons aussi une taille et un point central aux hasards... x = randint (0, X_MAX+1) y = randint (0, Y_MAX+1) taille = randint(TAILLE_MIN, TAILLE_MAX) for event in pygame.event.get(): # On intercepte une touche if event.type == pygame.KEYDOWN: # r pour rouges if event.key==K_r: trois_couleurs = False rouges = True bleues = False verts = False gris = False # b pour bleu if event.key==K_b: trois_couleurs = False rouges = False bleues = True verts = False gris = False # v pour vert if event.key==K_v: trois_couleurs = False rouges = False bleues = False verts = True gris = False # e pour ensemble: nous varions les trois couleurs! if event.key==K_e: trois_couleurs = True rouges = True bleues = True verts = True gris = False # g pour gris if event.key==K_g: trois_couleurs = False rouges = True bleues = True verts = True gris = True # d pour Delete! if event.key==K_d: pygame.draw.rect(gameDisplay, (0,0,0) , (0,0,800,600), 0) # Manage the "quit" event if event.type == pygame.QUIT : sortieDuJeux = True # On attend un peu... pygame.time.wait(100) # On initialise la couleur à NOIR! couleur = (0,0,0) # Les couleurs en Pygame sont des "tuples" de 3 valeurs (rouge, Vert, Bleu). les valeurs sont comprises entre 0 et 255. # En realité il y a la quatrième composante, la transparence, mais on discuterà de ça plus tard. # On produit notre couleur if not gris : couleur = (rouge * rouges, vert * verts, bleue * bleues) else : couleur = (rouge * rouges, rouge * rouges, rouge * rouges) # Note: Ici on a triché un peu en multipliant une valeur booleenne (True ou False) # pour un entier. En realité ça est faisable car True vaut 1 et False 0 # On visualize notre rectangle... pygame.draw.rect(gameDisplay, couleur, (x,y,taille, taille), 0) pygame.display.update() # Sortons de Pygame pygame.quit() # Sortons du programme quit()
Et voilà le résultat!