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.