Échecs avec Intelligence Artificielle

Introduction au Cours "IA et Jeux"

Ce projet s’inscrit dans le cadre du cours "IA et Jeux", où j’ai découvert les bases des algorithmes d’intelligence artificielle appliqués aux jeux. Le cours comprenait une initiation à des techniques telles que le parcours en largeur (BFS), le parcours en profondeur (DFS), et l’algorithme A* pour résoudre des problèmes classiques comme les N-Queens, le problème du Cavalier, et le jeu du Taquin. Ces travaux pratiques m’ont permis de comprendre les fondamentaux de la recherche de solutions dans des jeux de stratégie.
Un rapport détaillant ces concepts est disponible via le bouton ci-dessous pour ceux qui souhaitent en savoir plus.

Projet Final : Jeu d’Échecs avec IA

Le projet consiste en un jeu d’échecs où l’on peut jouer contre une intelligence artificielle (IA). Codé en C avec la bibliothèque graphique SDL, ce projet a été une occasion d’appliquer les concepts appris tout en abordant des problématiques concrètes liées à la programmation d’un jeu complet.

Fonctionnalités principales :

  1. Moteur de Jeu :

    • Implémentation des règles d’échecs, incluant les mouvements des pièces (pion, tour, cavalier, fou, dame et roi).

    • Certaines règles avancées, comme le roque et la prise en passant, n’ont pas été implémentées pour des raisons de temps.

    • Gestion des positions et mouvements via un tableau représentant l’échiquier.

  2. Interface Graphique :

    • Création de l’échiquier en affichant les cases et les pièces à l’aide de SDL.

    • Mise à jour dynamique de l’échiquier après chaque coup : toutes les images des pièces sont effacées et redessinées à leur nouvelle position.

  3. IA basée sur l’algorithme Minimax :

    • L’IA évalue les positions possibles en générant un arbre de coups à partir de la position actuelle.

    • Elle utilise une structure de liste chaînée pour construire cet arbre, où chaque nœud représente une situation de jeu après un coup.

    • L’algorithme Minimax permet à l’IA de maximiser son avantage tout en anticipant les meilleurs coups de l’adversaire.

Détails Techniques de l’IA

L’IA a été conçue pour simuler une réflexion stratégique grâce à l’algorithme Minimax.

Voici comment cela fonctionne :

  1. Génération des coups possibles :

    • À partir de la position actuelle, l’IA explore tous les coups légaux.

    • Chaque coup génère une nouvelle position, ajoutée à une liste chaînée pour former un arbre de décision.

  2. Évaluation des positions :

    • Chaque position est attribuée un score basé sur des critères comme la valeur des pièces capturées et la sécurité du roi.

    • Un score élevé représente une position favorable pour l’IA, tandis qu’un score bas indique une position désavantageuse.

  3. Optimisation de la recherche :

    • Les coups sont triés par pertinence (du meilleur au moins bon), permettant à l’IA de concentrer ses calculs sur les scénarios les plus prometteurs.

    • Cela augmente la profondeur de recherche possible sans compromettre les performances.

  4. Recherche en profondeur :

    • L’algorithme alterne entre maximiser les scores pour l’IA et minimiser les scores pour simuler les choix de l’adversaire.

    • Une profondeur excessive ralentit le jeu, il a donc fallu trouver un équilibre entre performance et temps de calcul.

  5. Choix du meilleur coup :

    • Après avoir exploré l’arbre jusqu’à la profondeur maximale, l’algorithme remonte pour sélectionner le coup initial qui mène au meilleur score.

Résultats

Malgré les optimisations mises en place, comme la sélection des meilleurs coups pour améliorer la profondeur de recherche ou l’affinement du calcul des scores, l’IA reste peu performante. Elle est facilement battue par une personne ayant un minimum de connaissances en stratégie aux échecs. Cela s’explique par la limitation de l’algorithme Minimax, notamment en l’absence d’élagage ou d’utilisation de bases de données stratégiques.

Améliorations possibles
  • Ajout de fonctionnalités : Intégrer le roque, la prise en passant et la promotion des pions pour enrichir les règles du jeu et offrir une expérience plus complète.

  • Optimisation des calculs : Utiliser l’élagage alpha-bêta pour réduire les temps de calcul et permettre une recherche plus profonde dans l’arbre des coups possibles.

  • Utilisation de bases de données : Incorporer des bases de données de coups connus pour que l’IA puisse s’appuyer sur des stratégies prédéfinies et gagner en efficacité dans les débuts et les milieux de partie.

  • Passage à une IA avec apprentissage : Exploiter des techniques d’apprentissage automatique, comme les réseaux neuronaux, pour permettre à l’IA de s’améliorer en jouant contre elle-même ou en analysant des parties existantes.

Ces évolutions permettraient non seulement de renforcer les capacités stratégiques de l’IA, mais également de rendre le projet plus abouti et compétitif.

Accéder au Projet Échecs avec IA

Le code source complet de ce projet est disponible sur mon dépôt GitHub. Vous pouvez y découvrir l’implémentation des règles du jeu, la gestion de l’interface graphique, et l’algorithme Minimax utilisé pour l’intelligence artificielle.

Pour explorer ce projet, cliquez sur le bouton ci-dessous :