Skip to content

jgavairo/gomoku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

217 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Gomoku IA - Intelligence Artificielle de Jeu de Stratégie

Statut: 🚧 IN PROGRESS 🚧

📋 Description

Ce projet consiste à développer un jeu Gomoku jouable, integrant une intelligence artificielle capable de battre des joueurs humains. Gomoku un jeu de stratégie traditionnel joué sur un plateau de Go. L'IA utilise l'algorithme Min-Max avec une heuristique optimisée pour prendre des décisions rapides et efficaces.

Technologie : Développé en C++ avec une architecture orientée objet moderne.

🎯 Objectifs

  • Developper le jeu Gomoku en c++
  • Développer une interface graphique intuitive et agréable
  • Créer une IA imbattable au Gomoku
  • Implémenter l'algorithme Min-Max avec une heuristique performante
  • Respecter les contraintes de performance (≤ 0.5s par coup en moyenne)

🎮 Règles du Jeu

Règles de base

  • Plateau : 19x19
  • Victoire : Aligner 5 pierres ou plus
  • Joueurs : 2 Joueurs tour par tour

Règles spéciales implémentées

🎯 Captures (Ninuki-renju/Pente)

  • Capturer une paire de pierres adverses en les encerclant
  • Condition de victoire : Capturer 10 pierres adverses au total
  • Les intersections libérées peuvent être rejouées

🏁 Capture en fin de partie

  • Un alignement de 5 ne gagne que si l'adversaire ne peut pas le briser par capture
  • Si un joueur a déjà perdu 4 paires et que l'adversaire peut en capturer une 5ème, victoire par capture

🚫 Interdiction des double-trois

  • Interdiction de jouer un coup qui crée deux alignements de trois libres simultanément
  • Exception : Les double-trois créés par capture sont autorisés

🛠️ Architecture Technique

Technologies utilisées

  • Langage : C++17
  • Bibliothèque graphique : SFML 2.6.1
  • Compilation : g++ avec Makefile
  • Dépendances audio : OpenAL, Vorbis, FLAC

Algorithme Principal

  • Min-Max avec élagage alpha-bêta
  • Heuristique personnalisée pour l'évaluation des positions
  • Arbre de recherche optimisé pour la performance
  • Classes modulaires pour une maintenance facilitée

Composants principaux

📦 Gomoku/
├── 🧠 src/ia/             # Intelligence artificielle
├── 🎮 src/game/          # Logique de jeu
├── 🖼️  src/gui/           # Interface graphique
├── 📁 src/utils/         # Utilitaires
├── 📁 include/           # Headers publics
└── 📄 main.cpp           # Point d'entrée

Architecture des Classes (OOP)

🏗️  Architecture Orientée Objet
├── 🎯 class Game          # Contrôleur principal du jeu
├── 🏁 class Board         # Représentation du plateau 19x19
├── 🧠 class AI            # Intelligence artificielle
├── 👤 class Player        # Gestion des joueurs (Humain/IA)
├── 🎮 class GameEngine    # Logique du jeu et règles
├── 🖼️  class GUI           # Interface graphique
├── ⏱️  class Timer         # Mesure de performance
└── 🐛 class Debug         # Outils de débogage

⚡ Fonctionnalités

Partie Obligatoire

Jgavairo

  • Interface graphique : Interface graphique interactif
  • Menu : Menu Principal
  • Timer : Affichage du temps de réflexion de l'IA
Partie Bonus (à implémenter après validation de la partie obligatoire)
  • Sound design : Musique d'ambiance menu/jeu, effets
  • Design avance : Interface utilisable et agréable
  • Game customisation : Possibilitee de choix pack de theme au lancement (Couleur plateau/jetons)

Lmattern

  • Humain vs Humain : Mode deux joueurs avec suggestions de l'IA
  • IA vs Humain : Jeu contre l'intelligence artificielle
  • Mode debug : Visualisation du processus de décision de l'IA
Partie Bonus (à implémenter après validation de la partie obligatoire)
  • Differents niveaux de difficultees : Choix entre Facile, Moyen et Standard

🔧 Compilation et Installation

Prérequis

  • Compilateur : g++ ou clang++ (support C++17)
  • Bibliothèque graphique : SFML 2.6.1 (installé automatiquement)
  • Make : Version récente
  • CMake : Pour la compilation des dépendances

Installation des dépendances

# Vérification des dépendances
make check-deps
# Installation automatique de SFML et dépendances
make SFML

# Vérification des dépendances
make check-deps

Compilation

# Compilation standard
make

# Compilation avec optimisations
make all

# Compilation en mode debug
make debug

# Nettoyage des fichiers objets
make clean

# Nettoyage complet
make fclean

# Recompilation complète
make re

# Installation dans ~/bin/
make install

# Désinstallation
make uninstall

# Aide et informations
make help

Flags de compilation recommandés

CXXFLAGS = -std=c++17 -Wall -Wextra -Werror -O2
SFML_DIR = /home/jgavairo/local
SFML_INCLUDE = -I$(SFML_DIR)/include
SFML_LIBS = -L$(SFML_DIR)/lib -lsfml-graphics -lsfml-window -lsfml-system -lsfml-audio

🚀 Utilisation

Installation et compilation

# Installation des dépendances
make SFML

# Compilation du projet
make

# Installation globale (optionnel)
make install

Lancement du jeu

# Depuis le dossier du projet
./Gomoku

# Si installé globalement
Gomoku

# Mode debug (si implémenté)
./Gomoku --debug

# Aide
./Gomoku --help

Commandes de développement

# Vérification des dépendances
make check-deps

# Compilation en mode debug
make debug

# Nettoyage
make clean

# Aide Makefile
make help

📊 Contraintes de Performance

  • Temps de réflexion : ≤ 0.5 seconde par coup (en moyenne)
  • Robustesse : Aucun crash autorisé, même en cas de manque de mémoire
  • Optimisation : Profondeur de recherche et heuristique optimisées

🎯 Critères d'Évaluation

Algorithme Min-Max

  • Implémentation correcte et complète
  • Compréhension approfondie du fonctionnement
  • Explication détaillée lors de la soutenance

Heuristique

  • Précision de l'évaluation des positions
  • Rapidité d'exécution
  • Capacité d'adaptation aux stratégies adverses

Règles de jeu

  • Implémentation correcte de toutes les règles spécifiées
  • Gestion des cas particuliers (captures, double-trois, etc.)

🐛 Debug et Développement

Le projet inclut un système de debug permettant de :

  • Visualiser l'arbre de recherche de l'IA
  • Analyser les évaluations heuristiques
  • Comprendre le processus de décision
  • Optimiser les performances

🤝 Contribution

Ce projet est développé dans le cadre d'un cursus académique. Les contributions externes ne sont pas acceptées pour des raisons d'intégrité académique.

📚 Ressources

Gomoku et Algorithmes

C++ et Développement


🎯 Statut actuel : Configuration complète et Makefile fonctionnel
⏳ Prochaine étape : Implémentation de la fenêtre SFML et du plateau de jeu 19x19

Projet réalisé dans le cadre du cursus 42

About

Un projet d'IA pour le jeu de stratégie Gomoku avec des règles spécifiques (capture, double-trois interdits, etc.) utilisant l'algorithme Min-Max.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors