Jeu d'Echec

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.