POUR LE BINÔME ADULTE
Lignes avec - : retirées. Lignes avec + : ajoutées.
Les autres donnent le contexte. Ce fichier ne se lance pas.

--- rubiks_etape_03.py
+++ rubiks_etape_04.py
@@ -1,5 +1,5 @@
-"""Rubik's Cube — étape 03.
-Lancement : py rubiks_etape_03.py
+"""Rubik's Cube — étape 04.
+Lancement : py rubiks_etape_04.py
 Chaque fichier fonctionne seul. Lis aussi le carnet Word.
 """
 
@@ -38,30 +38,51 @@
 def main():
     pygame.init()
     fenetre = pygame.display.set_mode((1000, 700))
-    pygame.display.set_caption("Mon Rubik's Cube - Etape 3")
+    pygame.display.set_caption("Mon Rubik's Cube - Etape 4")
     horloge = pygame.time.Clock()
     police = pygame.font.Font(None, 25)
     petite = pygame.font.Font(None, 21)
+    cube = creer_cube()
     en_marche = True
     while en_marche:
         for evenement in pygame.event.get():
             if evenement.type == pygame.QUIT:
                 en_marche = False
+            if evenement.type == pygame.MOUSEBUTTONDOWN and evenement.button == 1:
+                # Laboratoire de couleurs seulement : ce clic ne tourne pas le cube.
+                for face in POSITIONS:
+                    x, y = origine(face)
+                    for ligne in range(3):
+                        for colonne in range(3):
+                            case = pygame.Rect(x + colonne * TAILLE_CASE,
+                                               y + ligne * TAILLE_CASE,
+                                               TAILLE_CASE - ECART, TAILLE_CASE - ECART)
+                            if case.collidepoint(evenement.pos):
+                                palette = list(COULEURS)
+                                actuelle = cube[face][ligne][colonne]
+                                suivante = (palette.index(actuelle) + 1) % len(palette)
+                                cube[face][ligne][colonne] = palette[suivante]
+            if evenement.type == pygame.KEYDOWN and evenement.key == pygame.K_DELETE:
+                cube = creer_cube()
 
         fenetre.fill(FOND)
-        fenetre.blit(police.render('Les six faces de mon cube', True, (245, 245, 245)), (24, 20))
+        fenetre.blit(police.render('Le laboratoire des couleurs', True, (245, 245, 245)), (24, 20))
         for face in POSITIONS:
             x, y = origine(face)
             fenetre.blit(petite.render(face, True, (240, 240, 240)), (x, y - 20))
             for ligne in range(3):
                 for colonne in range(3):
-                    couleur = COULEURS[face]
+                    couleur = COULEURS[cube[face][ligne][colonne]]
                     rectangle = pygame.Rect(x + colonne * TAILLE_CASE,
                                             y + ligne * TAILLE_CASE,
                                             TAILLE_CASE - ECART, TAILLE_CASE - ECART)
                     pygame.draw.rect(fenetre, couleur, rectangle)
         legende = "U haut   D bas   F devant   B derrière   L gauche   R droite"
         fenetre.blit(petite.render(legende, True, (230, 230, 235)), (24, 590))
+        aide = "Clique une case pour changer sa couleur. Suppr : recommencer."
+        fenetre.blit(petite.render(aide, True, (240, 240, 240)), (24, 630))
+        avertissement = "Ces couleurs libres ne représentent pas forcément un cube réalisable."
+        fenetre.blit(petite.render(avertissement, True, (255, 210, 90)), (24, 655))
         pygame.display.flip()
         horloge.tick(60)
     pygame.quit()
