Jeu d'Échecs en Langage C

Présenté par : Loïc PORTOIS, Abel MARQUET, Baptiste GUILBERT

UniLaSalle Amiens

6 juin 2025

1 / 23

Jeu d'Échecs en C - Présentation

  • Thème : Création d'un jeu d'échecs en C.
  • Objectifs du Projet :
    • Règles complètes implémentées.
    • Système de sauvegarde et chargement.
    • Interface graphique fonctionnelle avec SDL2.
    • Intelligence Artificielle (IA) basique.
  • Objectifs de la Soutenance :
    • Présenter notre projet.
    • Montrer les fonctionnalités clés.
    • Expliquer notre parcour dans le projet
Illustration du jeu d'échecs
2 / 23

Plan de la Présentation

  1. Introduction Générale & Contexte
  2. Architecture & Algorigramme Principal
  3. Logique du Jeu d'Échecs
  4. Interface Graphique (SDL2)
  5. Sauvegardes & Chargement des parties
  6. Intelligence Artificielle (IA)
  7. Bonus
  8. Outils & Logiciels Utilisés
  9. Documentation & Sources Utilisées
  10. Conclusion et Perspectives
  11. Remerciements
3 / 23

Introduction & Contexte du Projet

Concept du jeu d'échecs
4 / 23

Algorigramme : Programme Principal / Architecture

Algorigramme du programme principal et architecture
5 / 23

Logique du Jeu : Au Cœur des Mécanismes

  • Modélisation de l'Échiquier :
    • Représentation interne de chaque case et de son contenu.
    • Gestion des pièces : identification (type, couleur) et position.
    • Suivi de l'état global du jeu (tour du joueur, conditions de roque, etc.).
  • Mise en Place Initiale :
    • Placement automatique des pièces en début de partie.
    • Configuration des paramètres de départ.
  • Contrôle Rigoureux des Déplacements :
    • Application des règles de mouvement spécifiques à chaque pièce.
    • Vérification des trajectoires (obstructions) et des captures valides.
    • Interdiction des coups plaçant son propre roi en échec.
Exemple de mouvements de pièces
6 / 23

Logique du Jeu : Règles Spéciales & Fin

  • Coups spéciaux :
    • Roque (conditions spécifiques).
    • Prise en passant.
    • Promotion des pions.
  • Détection d'échec, mat & pat.
  • Gestion des nulles :
    • Triple répétition, 50 coups, matériel insuffisant.
Illustration du roque
7 / 23

Algorigramme : Logique du Jeu

Algorigramme de la logique du jeu
8 / 23

Interface Graphique (SDL2) : Rendu & Interactions

  • Initialisation SDL2 : Fenêtre, rendu, modules (Image, TTF).
  • Chargement des médias : Textures des pièces, polices.
  • Thème visuel : Sombre.
  • Rendu de l'échiquier et des pièces.
  • Surlignages dynamiques :
    • Sélection, dernier coup, coups valides, échec.
Capture d'écran du jeu en cours
9 / 23

Interface Graphique (SDL2) : Menus & Panneaux

  • Panneau latéral d'infos : Tour, noms, boutons (dont sauvegarde).
  • Menus interactifs (illustré par le menu principal) :
    • Principal, Chargement/Sauvegarde, Promotion. (en partie)
  • Affichage des règles (défilantes via menu).
  • Boîtes de saisie de texte (ex: nom du joueur en début de partie JcJ).
Menu principal du jeu d'échecs
10 / 23

Algorigramme : Implémentation Graphique

Algorigramme de l'implémentation graphique
11 / 23

Sauvegardes & Chargement

  • Structure de sauvegarde dédiée : État du jeu, nom, mode.
  • Fonctions de sauvegarde et de chargement des parties.
  • Validation de l'intégrité des fichiers de sauvegarde.
  • Gestion des emplacements :
    • Lister et charger les parties.
    • Sauvegarder la partie en cours.
    • Renommer ou éditer une sauvegarde
Menu d'édition du nom d'une sauvegarde
12 / 23

Algorigramme : Sauvegarde & Chargement

Algorigramme du système de sauvegarde et chargement
13 / 23

IA : Évaluation de Position

  • Principes d'évaluation d'une position :
    • Matériel (valeur des pièces).
    • Positionnement (Tables PST : influence de la case).
    • Sécurité du Roi.
    • Bonus spécifiques : Paire de fous, tours actives, pions passés.
    • Adaptations pour la logique de fin de partie.
    • Utilisation du Zobrist Hashing
Illustration de la valeur matérielle des pièces
Illustration du positionnement stratégique et Tables PST
14 / 23

IA : Algorithme de Recherche

  • Algorithme Minimax avec élagage Alpha-Bêta :
    • Exploration optimisée de l'arbre des coups possibles.
    • Réduction significative du nombre de positions à évaluer.
  • Profondeur itérative :
    • Recherche progressive pour une réponse rapide et affinée.
    • Gestion du temps de réflexion alloué à l'IA.
    • Améliore l'ordonnancement pour les recherches plus profondes.
  • Recherche de quiescence :
    • Analyse étendue des positions tactiques (captures, promotions).
    • Stabilisation de l'évaluation, évite "l'effet d'horizon".
Diagramme de l'algorithme Minimax avec élagage Alpha-Bêta
15 / 23

Algorigramme : Intelligence Artificielle

Algorigramme de l'Intelligence Artificielle
16 / 23

Bonus : Version Web du Jeu

  • Initiative personnelle : Adaptation du projet en JavaScript, HTML et CSS.
  • Objectif : Accessibilité et jouabilité directes dans un navigateur.
  • Défis principaux :
    • Traduction de la logique C en JavaScript.
    • Recréation de l'interface (HTML/CSS/Canvas).
  • Statut actuel : Fonctionnel a https://chess.portois.fr.
Capture d'écran de la version web du jeu
17 / 23

Bonus : Entraînement d'IA

  • Mini-Projet Exploratoire : Entrainement d'une intéligence artificielle.
  • Niveau 1 :
    • Implémentation de la logique du jeu de Morpion (Tic-Tac-Toe) en Python.
    • Entraîner une intelligence artificielle par renforcement grâce à Tensorflow.
    • Implémentation des résultats de l'entraînement.
  • Niveau 2 :
    • Implémentation de la logique du jeu d'échecs en Python.
    • Entraîner une intelligence artificielle par renforcement grâce à Tensorflow.
    • Implémentation des résultats de l'entraînement. (En cours)
  • Objectif : Comprendre les IA entraînées par renforcement.
Image réseau neuronal
18 / 23

Bonus : Console

  • Mini-Projet de Console :
    • Concrétisation du jeu.
    • Mettre notre jeu d'échecs sur console portable.
    • Téléchargable pour tous a : https://dlul.portois.fr/-WrbzdLdPx5/ChessV12.zip
Image de la console de jeu
19 / 23

Outils & Logiciels Utilisés

  • Visual Studio Code
  • Langage C
  • GCC (GNU Compiler Collection)
  • SDL2 & extensions (SDL_image, SDL_ttf)
  • HTML, CSS, JavaScript
  • Markdown
  • Mermaid
VSCode Logo C Language Logo GCC Logo SDL2 Logo HTML5 Logo CSS3 Logo JavaScript Logo Markdown Logo Mermaid JS Logo
20 / 23

Documentation & Sources

  • Documentation officielle SDL2.
  • Références du langage C.
  • Forums et communautés en ligne :
    • Stack Overflow : Résolution de problèmes techniques.
    • Communautés dédiées aux échecs et à la programmation d'IA.
    • YouTube
  • Articles et tutoriels sur :
    • Algorithmes d'IA pour les jeux (Minimax, Alpha-Bêta).
    • Implémentation des règles des échecs, Zobrist Hashing.
Illustrations de sources de documentation
21 / 23

Conclusion et Perspectives

  • Objectifs Atteints : Jeu fonctionnel, interface, Sauvegarde/Chargement, IA.
  • Apports du Projet : Maîtrise du C, de SDL2, des algorithmes, gestion de projet, connaissance des intelligences artificielles.
  • Esprit Critique : Complexité de l'IA, gestion de la mémoire, performance.
  • Perspectives d'Amélioration :
    • IA plus performante (évaluation affinée / optimisations).
    • Mode multijoueur en réseau.
    • Améliorations UI/UX (thèmes, sons, aide visuelle).
    • Implémentation de l'IA entraînée par renforcement.
22 / 23

Merci à vous pour votre attention !

  • Des questions ?
23 / 23