Projet Scolaire

Projet – Jeu De La Vie

Réalisation d'un automate cellulaire autonome en C++ mettant en pratique une conception logicielle rigoureuse, de la modélisation UML à la gestion de la mémoire.

Projet – Jeu De La Vie

Réalisation d'une simulation du Jeu de la Vie en C++

Dans le cadre du module de Programmation Orientée Objet (POO) de mon cursus à CESI, j'ai réalisé une simulation complète du célèbre automate cellulaire de John Conway : le Jeu de la Vie.

Le but de ce projet était de concevoir un programme capable de faire évoluer une population de cellules de manière autonome, selon des règles précises de naissance et de mort. Le véritable défi ne résidait pas seulement dans l'algorithme, mais dans la création d'une architecture logicielle modulaire respectant scrupuleusement les principes SOLID et intégrant des Design Patterns avancés.

Les grandes étapes du projet

Tout a commencé par une phase d'analyse et de modélisation. Avant d'écrire la moindre ligne de code, nous avons structuré l'application à l'aide de diagrammes UML (Classes, Séquence, Activité). Cela nous a permis de définir clairement la séparation entre la logique métier (le moteur du jeu) et l'interface utilisateur.

Diagramme UML du projet Jeu de la Vie

Ensuite est venue la phase de développement en C++, où nous avons utilisé nos diagrammes comme véritable plan de construction. Cette approche nous a permis de coder le programme de la manière la plus efficace possible, en structurant rigoureusement la gestion de la mémoire et en intégrant la bibliothèque SFML, tout en conservant une séparation claire entre la logique et l'affichage.

Interface graphique SFML du Jeu de la Vie

Enfin, nous avons validé notre jeu grâce à des tests unitaires automatisés, garantissant que les règles (survie, surpopulation, isolement) étaient parfaitement respectées, même dans les cas limites.

📂
Voir le code : L'intégralité du code source, incluant l'architecture modulaire et les tests unitaires, est disponible sur mon GitHub.

Les fonctionnalités clés du système

  • 🖥️ Mode Console : Une exécution rapide qui génère des fichiers textuels pour chaque itération, idéal pour analyser l'évolution pas à pas.
  • 🎨 Mode Graphique : Une interface visuelle temps réel développée avec SFML, permettant d'observer la vie des cellules de manière fluide et interactive.
  • 🌍 Mode Torique (Monde Infini) : Une extension qui connecte les bords de la grille (le haut avec le bas, la gauche avec la droite) grâce à l'arithmétique modulaire, créant un univers sans murs.
  • ✅ Robustesse & Tests : Un système de validation automatique qui vérifie la stabilité des motifs (blocs, oscillateurs) et assure la fiabilité du programme.

Bilan et compétences acquises

Ce projet m'a permis de maîtriser le cycle complet de développement d'une application logicielle en C++. J'ai notamment appris :

  • 🧠 La modélisation avancée (Diagrammes UML).
  • 🏗️ L'application des Design Patterns.
  • 💻 Le développement C++ moderne et la gestion rigoureuse de la mémoire (pointeurs, destructeurs).
  • 🎨 L'intégration de bibliothèques tierces (SFML) dans un projet structuré.
  • 🧪 La validation logicielle par l'écriture de tests unitaires.
Partager : Twitter / X LinkedIn