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