Un moteur de puzzle qui conçoit, teste et optimise ses propres niveaux
Aujourd’hui, je partage un projet qui m’a passionné : un générateur de niveaux entièrement autonome pour un puzzle de voitures, inspiré du célèbre Rush Hour.
Ce programme ne se contente pas d’afficher un jeu, il pense, analyse et sélectionne les meilleurs défis avant même que le joueur ne commence à jouer.
Un puzzle simple… mais une mécanique complexe derrière
Le principe : une grille 6×6, une voiture rouge à sortir par la droite, et des véhicules qui bloquent le passage.
Mais derrière cette apparente simplicité, le programme :
- place les voitures aléatoirement,
- vérifie que la configuration est jouable,
- calcule le nombre minimal de coups pour résoudre le niveau,
- retient uniquement les configurations les plus intéressantes.
Chaque niveau est donc unique, équilibré, et surtout résolu par l’algorithme avant d’être proposé au joueur.
Un générateur basé sur la recherche en largeur (BFS)
Pour évaluer la difficulté d’un niveau, chaque configuration est encodée sous forme d’un nombre en base 6.
Ensuite, le programme explore toutes les possibilités via une recherche en largeur (Breadth‑First Search) :
- file d’états,
- dictionnaire des configurations déjà vues,
- génération des déplacements possibles,
- calcul du nombre minimal de coups.
Ce système permet de déterminer précisément la difficulté d’un niveau et d’assurer une progression cohérente.
Une interface entièrement dessinée par le programme
Le moteur graphique gère :
- le parking,
- les voitures (formes arrondies, ombres, vitrage),
- les boutons interactifs,
- les messages contextuels,
- l’écran de victoire.
Chaque élément visuel est généré via des procédures dédiées, pour un rendu propre et dynamique.
Un niveau n’est retenu que s’il représente un vrai défi
Le programme teste jusqu’à 12 configurations différentes et retient celle qui demande le plus de coups pour être résolue.
Il classe ensuite la difficulté : Facile, Moyen, Difficile, Expert.
Le joueur bénéficie ainsi d’une expérience progressive, sans niveaux trop simples ou impossibles.
Une expérience fluide et intuitive
Le joueur peut :
- sélectionner une voiture,
- choisir une destination,
- recommencer le niveau,
- générer un nouveau défi,
- passer automatiquement au niveau suivant après une victoire.
Le tout géré par une boucle principale qui orchestre l’affichage, les interactions et la logique du jeu.
En résumé
Embouteillage est un moteur de puzzle complet, capable de :
- générer des niveaux cohérents,
- analyser leur difficulté,
- sélectionner les meilleurs,
- les afficher avec une interface claire,
- gérer toutes les interactions du joueur.
Une belle démonstration de ce que l’on peut accomplir en combinant algorithmique, génération procédurale, graphisme, et game design.
Programme : Embouteillage