Jeu d'Echec
- Tech Stack: C++, SFML
- Github URL: Project Link
Ce projet consiste en un jeu d’échecs complet développé en C++ avec une interface graphique via SFML. L’objectif principal était de concevoir une intelligence artificielle capable de jouer contre un humain ou une autre IA, en anticipant plusieurs coups à l’avance grâce à un algorithme de planification.
🔧 Architecture du projet
- Utilisation d’une matrice 8x8 représentant l’échiquier, où chaque case contient un pointeur vers une pièce ou est vide.
- Méthodes dédiées pour placer, déplacer, capturer ou supprimer des pièces.
- Gestion complète des règles du jeu : déplacements valides, promotions, roque, prise en passant, etc.
- Implémentation modulaire facilitant l’ajout de nouvelles fonctionnalités ou variantes de règles.
♟️ Représentation des pièces
Chaque pièce du jeu (roi, dame, tour, fou, cavalier, pion) hérite d’une classe abstraite Piece définissant une interface commune.
- Chaque sous-classe définit son type, son symbole graphique, et ses mouvements valides.
- Implémentation d’une méthode
peutSeDeplacer(Position dest, Echiquier &e)pour valider les déplacements selon les règles. - Utilisation de polymorphisme pour rendre le moteur de jeu extensible et maintenable.
🎮 Gestion du jeu
- Alternance automatique entre joueur blanc et joueur noir.
- Détection de l’état d’échec, échec et mat, et pat.
- Affichage des coups possibles pour une meilleure lisibilité côté joueur.
🧠 Intelligence Artificielle : Planification des coups
🔍 Algorithme Minimax
- L’IA explore les coups possibles sur plusieurs niveaux de profondeur, selon le principe du jeu à somme nulle.
- Chaque position est évaluée avec une fonction d’évaluation qui prend en compte le matériel, la position des pièces, et les menaces.
- Implémentation récursive avec gestion de la profondeur et retour du meilleur coup.
⚡ Élagage Alpha-Bêta
- Optimisation du Minimax via l’élagage alpha-bêta pour éviter d'explorer des branches non nécessaires.
- Réduction significative du temps de calcul sans perte de précision.
- Permet de chercher plus profondément dans l’arbre de décision avec les mêmes ressources.
🧠 Avancées IA (En expérimentation)
- Table de transposition : Stockage des positions déjà analysées via un système de hachage pour accélérer les décisions.
- Exploration du Deep Learning : Intégration expérimentale d’un réseau de neurones pour évaluer des positions de manière plus « humaine ».
- Objectif : combiner heuristiques classiques et modèles entraînés pour créer un moteur hybride.