From 6d5f5e7c750c56d026e0ca8ccbf393606bdbc956 Mon Sep 17 00:00:00 2001
From: m19023837 <chadi.mansour@etu.univ-amu.fr>
Date: Thu, 28 Nov 2024 14:53:20 +0100
Subject: [PATCH] updated README.md

---
 README.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 66 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 07b93ef..4977b12 100644
--- a/README.md
+++ b/README.md
@@ -2,4 +2,69 @@ Project members :
 
 member 1 : Mansour Chadi
 
-member 2 : Chahine Rami
\ No newline at end of file
+member 2 : Chahine Rami
+
+
+Objectif du Projet
+
+Ce projet a pour objectif de refactoriser un code initial qui ne respectait pas les principes SOLID, afin de le rendre plus lisible, modulaire, et extensible. La refactorisation vise à diviser le code en plusieurs sous-parties bien définies, en respectant des concepts de conception logicielle modernes, notamment les principes SOLID.
+
+Par ailleurs, de nouvelles fonctionnalités ont été ajoutées au jeu, notamment :
+
+    L'introduction d'éléments tels que des nuages, des rocailles, des routes et des montagnes.
+    L'ajout de pompiers équipés de motos pour une mobilité accrue.
+
+Approche Initiale et Révision du Plan
+
+    Approche Initiale :
+        Lors de la première phase, nous avons introduit des classes Manager pour gérer les pompiers et les incendies.
+        Ces classes étaient accompagnées d'interfaces Strategy permettant d'implémenter différents types de mouvements et comportements.
+        Cependant, cette approche s'est révélée complexe et peu fonctionnelle,
+        en raison d'une mauvaise séparation des responsabilités et d'une gestion inefficace des dépendances.
+
+    Nouvelle Approche :
+        Face à ces difficultés, nous avons opté pour une refonte complète du système.
+        Nous avons simplifié l'architecture en nous concentrant uniquement sur les stratégies de mouvements. 
+        Cette approche, plus simple, s'est avérée non seulement fonctionnelle, mais aussi plus facile à modifier et à étendre.
+
+Avantages de la Nouvelle Architecture
+
+La nouvelle architecture a démontré son efficacité lors de l'ajout des nouvelles fonctionnalités :
+
+    Modularité accrue : Chaque fonctionnalité est encapsulée dans des classes ou stratégies indépendantes.
+    Facilité de modification : L'ajout de nouveaux éléments comme les nuages, les rocailles, 
+        ou les motos n'a pas nécessité de réécriture majeure du code existant.
+    Respect des principes SOLID :
+        Single Responsibility Principle : Chaque classe ou stratégie a une responsabilité unique et clairement définie.
+        Open/Closed Principle : Le système est ouvert à l'extension mais fermé à la modification.
+        Liskov Substitution Principle : Les stratégies implémentent des interfaces communes et peuvent être utilisées de manière interchangeable.
+        Interface Segregation Principle : Les interfaces sont petites et spécifiques aux besoins de chaque composant.
+        Dependency Inversion Principle : Les dépendances sont abstraites et injectées, ce qui réduit le couplage.
+
+Fonctionnalités Clés
+
+Voici un aperçu des fonctionnalités intégrées grâce à cette refactorisation :
+
+    Stratégies de Propagation du Feu :
+        Différents types de terrains influencent la propagation des flammes :
+            Les montagnes bloquent complètement le feu.
+            Les rocailles ralentissent sa propagation, ne brûlant qu'à des intervalles précis.
+            Les routes empêchent la propagation.
+
+    Gestion des Pompiers :
+        Les pompiers peuvent se déplacer rapidement grâce à des motos, permettant une intervention plus efficace.
+        Les stratégies de mouvement tiennent compte des obstacles comme les montagnes et les rocailles.
+
+    Ajout d’éléments naturels :
+        Les nuages peuvent interagir avec le terrain et affecter les conditions du feu.
+        Les différents types de terrains apportent une dimension stratégique au jeu.
+
+    Visualisation Améliorée :
+        Le système de rendu utilise une grille pour afficher clairement chaque élément (feu, pompiers, routes, etc.),
+        avec des couleurs spécifiques pour une meilleure lisibilité.
+
+Conclusion
+
+Cette refactorisation a permis de transformer un code monolithique et difficile à maintenir en un système modulaire et extensible.
+Les bénéfices se sont manifestés lors de l'ajout rapide et efficace de nouvelles fonctionnalités.
+En adoptant une architecture basée sur les stratégies et les principes SOLID, le projet est désormais mieux structuré, plus facile à comprendre et prêt pour des extensions futures.
\ No newline at end of file
-- 
GitLab