Ce projet a été réalisé dans le cadre du cours de Programmation Orientée Objet (POO) durant mon semestre 6 à Télécom Saint-Étienne. Il consiste en une simulation interactive de différents types de matériaux (sable, liquide, solide) au sein d'une grille cellulaire, développée en C++ avec la bibliothèque graphique SFML.
L'objectif principal de ce projet était de mettre en pratique les concepts fondamentaux de la Programmation Orientée Objet à travers une application graphique temps réel :
- Encapsulation : Protection des données et séparation des responsabilités au sein des classes.
- Héritage : Création d'une hiérarchie de classes pour gérer les différents matériaux (classe mère abstraite
Celluleet classes filles spécialisées). - Polymorphisme : Manipulation uniforme des différents éléments via des pointeurs et des méthodes virtuelles.
- Gestion de la mémoire : Utilisation de pointeurs et des conteneurs de la STL (
std::vector).
L'application simule une grille de 150x150 cellules où chaque particule interagit avec son environnement selon des règles physiques définies. Le moteur de simulation gère la gravité, les collisions et les interactions chimiques (corrosion) à une fréquence de rafraîchissement définie.
Le projet intègre quatre matériaux aux comportements distincts :
- Sable (Sand) : Soumis à la gravité, il chute verticalement ou glisse en diagonale s'il rencontre un obstacle, formant des tas naturels.
- Pierre (Stone) : Matériau solide et statique. Il bloque le passage mais peut être détruit par l'acide.
- Métal (Steel) : Matériau solide, statique et indestructible. Il résiste à la corrosion.
- Acide (Acid) : Liquide corrosif. Il s'écoule, se déplace horizontalement et détruit les matériaux vulnérables (Sable et Pierre) au contact avant de se dissiper.
L'interface permet d'interagir avec la simulation via le clavier et la souris :
- Clic Gauche : Ajouter de la matière (bloc de 3x3 cellules).
- Espace : Mettre en pause ou reprendre la simulation.
- Touche S : Sélectionner le Sable.
- Touche O : Sélectionner la Pierre (Stone).
- Touche E : Sélectionner le Métal (Steel).
- Touche A : Sélectionner l'Acide.
Projet réalisé par Paulin Gasquet et Maxime Andri.