← Retour aux projets

Jeu de la Vie

JeuxDéveloppement

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 de l'architecture orientée objet du Jeu de la Vie

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 du Jeu de la Vie montrant les options de configuration et l'évolution des 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.

Interface graphique SFML du Jeu de la Vie avec grille torique et motifs complexes

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

Informations

Durée4 semaines
Datejanvier 2025
TypeProjet CESI - CPI

Technologies utilisées

C++SFMLVS codeGit