Skip to content
Snippets Groups Projects
Commit 5c969e83 authored by BELHACHEMI Mehdi's avatar BELHACHEMI Mehdi
Browse files

Merge remote-tracking branch 'origin/main'

parents 9bf3b6b6 dc5a3c10
Branches main
No related tags found
No related merge requests found
Pipeline #41677 passed
README.md 0 → 100644
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment