Jeu de la Vie
Implémentation du célèbre automate cellulaire de John Conway en C++ orienté objet. Une simulation où des motifs complexes émergent de règles simples, démontrant la beauté des systèmes dynamiques et de la programmation orientée objet.
Le concept du Jeu de la Vie
Le Jeu de la Vie de Conway n'est pas un jeu au sens traditionnel, mais plutôt un automate cellulaire inventé par le mathématicien John Conway en 1970. Il s'agit d'un système dynamique où l'évolution d'une grille de cellules suit des règles simples mais produit des comportements complexes et imprévisibles.
Chaque cellule peut être dans l'un de deux états : vivante ou morte. L'état des cellules évolue à chaque génération selon des règles déterministes basées sur l'état de leurs voisines. Cette simplicité cache une richesse comportementale extraordinaire : motifs stables, oscillateurs, planeurs qui se déplacent, et même des structures capables de simulation universelle.
Les règles du jeu
Le Jeu de la Vie suit quatre règles fondamentales qui déterminent l'évolution de chaque cellule d'une génération à la suivante :
- Sous-population : Une cellule vivante avec moins de 2 voisines vivantes meurt
- Survie : Une cellule vivante avec 2 ou 3 voisines vivantes survit à la génération suivante
- Surpopulation : Une cellule vivante avec plus de 3 voisines vivantes meurt
- Reproduction : Une cellule morte avec exactement 3 voisines vivantes devient vivante
Architecture orientée objet
Mon implémentation en C++ suit une architecture orientée objet claire et modulaire, séparant les responsabilités pour une meilleure maintenabilité et extensibilité :

Diagramme UML montrant l'architecture complète avec les classes Model, WorldInterface, Game, Grid et Cellule
Fonctionnement du programme
Mon implémentation offre deux modes d'utilisation distincts pour répondre à différents besoins :
Mode Console
L'interface console permet une configuration détaillée et un suivi précis de l'évolution. Elle propose le chargement de grilles depuis des fichiers texte et affiche les différentes générations

Interface console avec chargement de motifs, configuration de grille torique et suivi des générations
Mode Graphique avec SFML
L'interface graphique offre une visualisation en temps réel de l'automate cellulaire. Elle permet d'observer l'évolution de motifs sur de nombreuses générations avec des contrôles interactifs.

Visualisation graphique avec grille torique montrant l'évolution de motifs à la génération 23100
Fonctionnalités implémentées
- Interface graphique interactive avec contrôles temps réel (pause, vitesse, ...)
- Ingestion d'une grille de départ depuis fichiers texte
- Double mode : console et graphique SFML
- Ajout de logs d'itérations et statistiques
- Détection automatique de motifs stables et cycliques
- Implémentation d'une grille torique pour continuité spatiale
- Sauvegarde et chargement de configurations
- Contrôles interactifs en temps réel
Compétences développées
- Programmation orientée objet avancée en C++
- Conception d'architectures logicielles modulaires
- Implémentation d'automates cellulaires
- Implémentation d'une interface de jeu graphique