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_02.py
+++ rubiks_etape_03.py
@@ -1,20 +1,44 @@
-"""Rubik's Cube — étape 02.
-Lancement : py rubiks_etape_02.py
+"""Rubik's Cube — étape 03.
+Lancement : py rubiks_etape_03.py
 Chaque fichier fonctionne seul. Lis aussi le carnet Word.
 """
 
 import pygame
 
-TAILLE_CASE = 70
-ECART = 5
-COULEUR = (255, 140, 0)
+# Les lettres sont celles de la notation internationale du cube.
+# U haut, D bas, F devant, B derrière, L gauche, R droite.
+COULEURS = {
+    "U": (245, 245, 245), "D": (255, 215, 35),
+    "F": (35, 175, 95), "B": (50, 110, 235),
+    "L": (255, 145, 35), "R": (225, 55, 65),
+}
+
+
+def creer_cube():
+    # Chaque face contient trois lignes de trois lettres.
+    return {face: [[face for colonne in range(3)]
+                   for ligne in range(3)] for face in COULEURS}
+
+
+# Réglages à personnaliser.
+TAILLE_CASE = 44
+ECART = 4
 FOND = (30, 35, 50)
+# Positions dans le patron : colonne, ligne (pas des pixels).
+POSITIONS = {"U": (1, 0), "L": (0, 1), "F": (1, 1),
+             "R": (2, 1), "B": (3, 1), "D": (1, 2)}
+
+
+def origine(face):
+    colonne, ligne = POSITIONS[face]
+    pas = 3 * TAILLE_CASE + 22
+    return 24 + colonne * pas, 85 + ligne * pas
 
 
 def main():
     pygame.init()
-    fenetre = pygame.display.set_mode((600, 440))
-    pygame.display.set_caption("Mon Rubik's Cube - Etape 2")
+    fenetre = pygame.display.set_mode((1000, 700))
+    pygame.display.set_caption("Mon Rubik's Cube - Etape 3")
     horloge = pygame.time.Clock()
     police = pygame.font.Font(None, 25)
     petite = pygame.font.Font(None, 21)
@@ -25,15 +49,19 @@
                 en_marche = False
 
         fenetre.fill(FOND)
-        fenetre.blit(police.render('Une face avec deux boucles', True, (245, 245, 245)), (24, 20))
-        # La boucle extérieure choisit une ligne.
-        for ligne in range(3):
-            # La boucle intérieure parcourt les colonnes de cette ligne.
-            for colonne in range(3):
-                x = 185 + colonne * TAILLE_CASE
-                y = 105 + ligne * TAILLE_CASE
-                pygame.draw.rect(fenetre, COULEUR,
-                                 (x, y, TAILLE_CASE - ECART, TAILLE_CASE - ECART))
+        fenetre.blit(police.render('Les six faces de mon cube', 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]
+                    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))
         pygame.display.flip()
         horloge.tick(60)
     pygame.quit()
