Conway's Game of Life

  • Tech Stack: C#, .NET 9, WPF, SQLite, Entity Framework Core, API REST
  • Source Code: GitHub Link

Une simulation interactive du célèbre automate cellulaire de John Conway

Game of Life est une simulation visuelle basée sur l'automate cellulaire inventé par le mathématicien John Conway. Le programme simule l'évolution d'une population de cellules sur une grille 2D où chaque cellule peut être vivante ou morte.

À chaque génération, les cellules évoluent selon des règles simples basées sur leurs voisins, donnant naissance à des comportements émergents parfois très complexes : oscillateurs, structures stables ou motifs se déplaçant dans la grille.

Le projet a été développé en C# avec .NET et WPF afin de créer une application desktop interactive permettant de visualiser et manipuler la simulation en temps réel. La simulation peut sauvegarder et charger les états des générations grâce à SQLite, et envoyer les statistiques vers une API GameStats pour analyse.


🔁 Simulation et règles du jeu

Chaque cellule évolue selon trois règles fondamentales :

  • Une cellule vivante avec moins de 2 voisins vivants meurt (sous-population.)
  • Une cellule vivante avec 2 ou 3 voisins vivants survit
  • Une cellule vivante ayant plus de trois voisines vivantes meurt (surpopulation).
  • Une cellule morte avec exactement 3 voisins vivants devient vivante

Ces règles simples produisent des comportements émergents fascinants et imprévisibles, illustrant les bases des systèmes complexes et de la vie artificielle.


🖱️ Interaction utilisateur

L'interface graphique permet à l'utilisateur d'interagir directement avec la grille pour créer et tester différents motifs.

  • Création et suppression de cellules par clic
  • Génération aléatoire de configurations
  • Contrôle de la simulation en temps réel : Start / Pause / Step / Reset / Random
  • Visualisation de l'évolution génération par génération avec compteur de cellules vivantes et mortes
  • Envoi des résultats vers l’API GameStats pour analyse
  • Sauvegarde et chargement des générations via SQLite

⚙️ Fonctionnalités techniques

  • Architecture MVC : séparation logique du jeu, rendu graphique et timer
  • WPF pour l’interface interactive et responsive
  • Entity Framework Core et SQLite pour persistance des données
  • API REST pour la collecte et l’analyse des résultats
  • Suivi détaillé des générations : cellules vivantes, cellules mortes, dimensions de la grille

🧠 Architecture du projet

  • Core : logique de simulation (Game, Grid, Cell)
  • WPF UI : rendu graphique de la grille et gestion des interactions
  • Database Layer : sauvegarde et chargement des générations via SQLite
  • API Layer : envoi et récupération des statistiques de jeu

Cette architecture modulaire facilite la maintenance du projet et permet d'ajouter facilement de nouvelles fonctionnalités comme des patterns prédéfinis ou de l'analyse statistique.


Ce projet m'a permis d'approfondir mes compétences en développement .NET, interface graphique WPF, persistance avec SQLite, et architecture modulaire, tout en explorant un système algorithmique classique et fascinant.