Ce projet est une version moderne du célèbre jeu de logique Rush Hour, développée en C++ avec la bibliothèque graphique SFML. Il propose une interface graphique colorée, la gestion de plateaux personnalisés au format JSON, et l’affichage des véhicules sous forme de sprites colorés.
- Jeu manuel : déplacez les véhicules pour libérer la voiture rouge (X) et la faire sortir de la grille.
- Résolution automatique (IA) : l’algorithme trouve la solution optimale si elle existe.
- Affichage graphique : chaque véhicule est représenté par un sprite coloré selon sa couleur RVB définie dans le plateau JSON.
- Plateaux personnalisables : créez vos propres niveaux facilement en éditant des fichiers JSON.
- Interface claire et intuitive (clavier + souris).
- SFML 2.5+
- nlohmann/json (inclus dans
include/json.hpp) - CMake (recommandé) ou Makefile
-
Clonez le dépôt
git clone cd RUSH -
Placez vos assets
- Placez une image de voiture nommée
car.pngdans le dossierassets/ - Placez la police
OpenSans-Regular.ttfdansassets/
- Placez une image de voiture nommée
-
Compilation
mkdir build cd build cmake .. make -
Lancement
./RushHour
-
Menu principal :
1= Jouer manuellement
2= Résolution automatique (IA) -
Contrôles en mode manuel :
- Sélectionner un véhicule : appuyez sur sa lettre (
A,B, ...,X) - Déplacer : flèches directionnelles
- Objectif : amener la voiture rouge (X) à la sortie (bord droit de la grille)
- Sélectionner un véhicule : appuyez sur sa lettre (
-
Plateaux :
Les fichiers JSON des plateaux sont dans le dossierplateaux/.
Vous pouvez les éditer ou en créer de nouveaux.
{
"nom": "Plateau valide 6*6",
"largeur": 6,
"hauteur": 6,
"voitures": [
{"id":"A", "couleur":"rvb(0,255,0)", "x":1, "y":1, "taille":3, "orientation":"verticale"},
{"id":"B", "couleur":"rvb(0,0,255)", "x":4, "y":1, "taille":2, "orientation":"horizontale"},
{"id":"C", "couleur":"rvb(255,128,0)", "x":6, "y":2, "taille":3, "orientation":"verticale"},
{"id":"D", "couleur":"rvb(128,0,255)", "x":2, "y":6, "taille":2, "orientation":"horizontale"},
{"id":"E", "couleur":"rvb(255,255,0)", "x":5, "y":3, "taille":2, "orientation":"verticale"},
{"id":"F", "couleur":"rvb(128,128,128)", "x":3, "y":5, "taille":2, "orientation":"horizontale"}
],
"voiture_dep": {
"id":"X",
"couleur":"rvb(255,0,0)",
"x":2,
"y":3,
"taille":2,
"orientation":"horizontale"
},
"sortie": {"x":6, "y":3}
}| Lettre | Couleur RVB | Signification |
|---|---|---|
| X | rvb(255, 0, 0) | Voiture rouge (à sortir) |
| A | rvb(0, 255, 0) | Vert |
| B | rvb(0, 0, 255) | Bleu |
| C | rvb(255, 128, 0) | Orange |
| ... | ... | ... |
- Pour ajouter un nouveau plateau, copiez un fichier JSON existant et modifiez les positions, tailles, couleurs, etc.
- Pour changer l’apparence des voitures, remplacez
car.pngpar une autre image (format PNG recommandé). - Pour tester un plateau en IA, choisissez l’option 2 au lancement.
- Structure du projet :
src/: sources C++include/: headers et json.hppassets/: images et policesplateaux/: niveaux JSON.vscode/: config VS Code (optionnel)build/: dossier de compilation
Pour toute question, suggestion ou bug, contactez l’auteur du projet ou ouvrez une issue sur le dépôt Git.
Bon jeu et amuse-toi bien avec Rush Hour ! 🚗🧩