diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..eac2cb0bedb74ea1e0abd771d5fc333f8ad0ab00 --- /dev/null +++ b/README.md @@ -0,0 +1,150 @@ +Rapport de Projet : Proto-simulateur d'Automate Cellulaire + +Étudiants : Asfour Mohamed, Belhechemi Mehdi +Formation : L3 Informatique, Aix-Marseille Université +Enseignante : Mme Mesbah Ismahene + + +Introduction + +Ce projet visait à développer un proto-simulateur d’automate cellulaire où des pompiers interagissent avec des feux sur une grille, tout en prenant en compte différents terrains et éléments dynamiques. + +L’objectif principal était de fournir un simulateur structuré, respectant les principes SOLID et enrichi par des fonctionnalités avancées. Ce projet a également été une opportunité de collaborer efficacement en binôme tout en mettant en pratique les concepts de programmation orientée objet. +Problématique et Objectifs + +Problématique : +Comment concevoir une simulation réaliste et flexible, capable de gérer des interactions complexes entre les pompiers, les feux, et divers terrains, tout en garantissant la maintenabilité du code ? + +Objectifs : + + Refactoriser le code initial fourni pour respecter les principes SOLID. + Intégrer des éléments interactifs tels que pompiers, feux, nuages, terrains spécifiques et d’autres modules (e.g. gestion des couleurs et positions). + Préparer une démonstration fonctionnelle et un rapport détaillé pour évaluer le projet. + +Méthodologie et Répartition des Tâches + +Nous avons divisé le travail en plusieurs modules principaux, chaque étudiant contribuant de manière spécifique à chaque composant : + +1. Feux (Fire) + +Les feux se propagent toutes les deux itérations selon les caractéristiques des terrains environnants. + + Contributions de Belhechemi Mehdi : + Implémentation des règles de propagation des feux. + Gestion des interactions entre les feux et les terrains spécifiques (ex. : propagation retardée sur rocailles). + Contributions d’Asfour Mohamed : + Tests des comportements des feux dans différents scénarios. + Intégration des feux dans le simulateur global. + +2. Pompiers (FireFighter) + +Les pompiers peuvent éteindre les feux autour d’eux ou se diriger vers le feu le plus proche. + + Contributions d’Asfour Mohamed : + Développement de la logique de déplacement des pompiers et de leur capacité à éteindre les feux. + Tests unitaires pour valider leur comportement. + Contributions de Belhechemi Mehdi : + Gestion des interactions entre les pompiers et les terrains spécifiques (routes, montagnes). + Optimisation des algorithmes de déplacement pour rendre les pompiers plus efficaces. + +3. Pompiers Motorisés (MotorizedFireFighter) + +Ces pompiers disposent de déplacements accélérés, pouvant se déplacer de deux cases par tour. + + Contributions d’Asfour Mohamed : + Développement de la classe MotorizedFireFighter, héritant de la classe FireFighter. + Gestion des comportements spécifiques liés aux déplacements rapides. + Contributions de Belhechemi Mehdi : + Intégration des pompiers motorisés dans le simulateur global. + Tests approfondis de leurs interactions avec les terrains. + +4. Nuages (Clouds) + +Les nuages se déplacent de manière aléatoire et éteignent les feux rencontrés. + + Contributions d’Asfour Mohamed : + Développement de la logique de déplacement aléatoire des nuages. + Gestion des interactions entre les nuages et les feux. + Contributions de Belhechemi Mehdi : + Validation des interactions nuages-feux. + Tests pour s’assurer de leur intégration dans le simulateur sans conflit avec d’autres éléments. + +5. Terrains Spécifiques (Mountain, Road, Rocailles) + + Montagnes : Infranchissables pour les feux et les pompiers. + Routes : Réservées aux pompiers, facilitant leurs déplacements. + Rocailles : Zones où le feu met quatre tours à se propager. + Contributions de Belhechemi Mehdi : + Conception et implémentation des classes représentant les terrains. + Gestion des interactions entre les terrains et les autres éléments. + Contributions d’Asfour Mohamed : + Tests et validation des comportements des terrains dans différents scénarios. + Ajustements pour garantir la cohérence des interactions. + +6. Gestion des Positions (Position) + +Un module essentiel pour suivre la position des éléments sur la grille. + + Contributions d’Asfour Mohamed : + Développement de la classe Position pour gérer les coordonnées des éléments. + Contributions de Belhechemi Mehdi : + Optimisation des calculs liés aux déplacements. + +7. Gestion des Voisinages (Neighbour) + +Ce module permet de déterminer les éléments voisins (feux, pompiers, etc.) pour chaque case. + + Contributions d’Asfour Mohamed : + Conception de la logique de détection des voisins sur la grille. + Contributions de Belhechemi Mehdi : + Optimisation des algorithmes pour des performances améliorées sur les grandes grilles. + +8. Extinction des Feux (Extinguisher) + +Un module spécifique pour gérer l’extinction des feux par les pompiers ou les nuages. + + Contributions d’Asfour Mohamed : + Développement de la logique d’extinction dans la classe Extinguisher. + Contributions de Belhechemi Mehdi : + Validation des interactions et ajustements des règles d’extinction. + +9. Interface et Couleurs (ViewElement) + +La classe ViewElement gère l’affichage des éléments sur la grille avec des couleurs distinctives. + + Contributions de Belhechemi Mehdi : + Association des éléments avec des couleurs spécifiques. + Contributions d’Asfour Mohamed : + Tests de l’affichage et ajustements pour une meilleure lisibilité. + +Résultats Obtenus + + Refactorisation : + Une structure conforme aux principes SOLID, facilitant la maintenance et l’extension du code. + + Fonctionnalités Implémentées : + Gestion des feux, pompiers, terrains, nuages, et voisinages. + Interaction fluide entre tous les éléments dans des scénarios variés. + + Interface Fonctionnelle : + Une grille visuelle permettant de suivre les interactions entre les éléments en temps réel. + + +Conclusion et Perspectives + +Ce projet nous a permis de : + + Renforcer nos compétences en programmation orientée objet. + Appliquer les principes SOLID dans un contexte concret. + Collaborer efficacement en binôme pour atteindre des objectifs communs. + +Perspectives : + + Ajouter des éléments dynamiques supplémentaires (vent, pluie) influençant la propagation des feux. + Optimiser les algorithmes pour améliorer les performances sur les grandes grilles. + Étendre les fonctionnalités en explorant des modèles alternatifs. + +Annexes + + Dépôt Git : Code final mis à jour régulièrement, disponible avant la deadline (Vendredi 10h). + Diagramme de Classe : Présenté lors de la démonstration pour illustrer la structure du code. \ No newline at end of file