Skip to content
Snippets Groups Projects
Commit 85977509 authored by RADELLAH Badr's avatar RADELLAH Badr
Browse files

Final project ( dernier Commit )

parent 06aa6934
No related merge requests found
Pipeline #41665 passed
No preview for this file type
...@@ -32,6 +32,20 @@ ...@@ -32,6 +32,20 @@
<ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity"
mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0"
prefWidth="200.0" styleClass="button" text="Pause"/> prefWidth="200.0" styleClass="button" text="Pause"/>
<Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0"
text="BLACK : ROAD"/>
<Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0"
text="BLUE : FIREFIGHTER"/>
<Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0"
text="RED : FIRE"/>
<Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0"
text="GRAY : CLOUD"/>
<Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0"
text="AQUA : MOTORIZEDFIREFIGHTER"/>
<Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0"
text="BROWN : MOUNTAIN"/>
</VBox> </VBox>
<FirefighterGrid fx:id="grid" <FirefighterGrid fx:id="grid"
xmlns="http://javafx.com/javafx" xmlns="http://javafx.com/javafx"
......
src/Diagramme.png

149 KiB

# **Rapport de projet : Simulateur d'Automates Cellulaires**
## **1. Objectif du projet**
Le projet vise à simuler un système complexe utilisant un automate cellulaire représenté sous forme de grille. Les principales entités sont :
- **Feux** : Représentant les incendies qui se propagent.
- **Pompiers** : Acteurs principaux pour éteindre les incendies.
- **Nuages** : Contribuent également à l'extinction des feux.
- **Routes** : Influencent la propagation du feu.
- **Montagnes** : Empêchent le mouvement des entités.
L'objectif est de modéliser les interactions entre ces entités tout en respectant les principes de la programmation orientée objet.
---
## **2. Description technique**
### **2.1. Architecture logicielle**
L'architecture est basée sur les principes suivants :
- **Interface `Board`** : Définit les caractéristiques et états du plateau (grille).
- **Entités (`Elements`)** : Inclut des classes comme `Fire`, `Firefighter`, `Cloud`, etc., pour gérer des états spécifiques des positions dans la grille.
- **Mise à jour (`Updater`)** : Gestion des transitions des entités à chaque étape (par exemple, propagation du feu ou mouvement des pompiers).
- **Gestion d'état** : La classe `StateManager` centralise l'état de chaque position sur la grille.
### **2.2. Classes principales**
1. **Modèle du plateau (`FirefightingBoard`)**
- Contient les entités et gère leur initialisation.
- Gère les dimensions de la grille et les étapes de simulation.
2. **Entités**
- **`Fire`** : Gère la propagation des incendies en tenant compte des obstacles (routes, montagnes).
- **`Firefighter` et `MotorizedFirefighter`** : Extincteurs manuels et motorisés avec des algorithmes de déplacement spécifiques.
- **`Cloud`** : Positionne des nuages de pluie pour éteindre les feux.
- **`Road` et `Mountain`** : Obstacles pour les feux et les pompiers.
3. **Mise à jour (`Updater`)**
- `FireUpdater` : Propage les feux vers les cases adjacentes.
- `FirefighterUpdater` et `MotorizedFirefighterUpdater` : Déplacement et extinction de feux.
- `CloudUpdater` : Positionne les nuages pour éteindre les incendies.
### **2.3. Méthodes clés**
- **Initialisation** :
Chaque entité est positionnée aléatoirement grâce à `RandomPositionsGenerator`.
- **Propagation des états** :
Chaque `Updater` modifie l'état des entités selon des règles spécifiques.
- **Gestion des voisins** :
La classe `Neighbors` identifie les cases adjacentes pour chaque position.
---
## **3. Respect des principes SOLID**
1. **Responsabilité unique (SRP)** :
Chaque classe a une seule responsabilité (exemple : `Fire` gère les positions des feux uniquement).
2. **Ouvert/fermé (OCP)** :
Les entités (`FireExtinguisher`, `Updater`) peuvent être étendues sans modification des classes existantes.
3. **Substitution de Liskov (LSP)** :
Les classes dérivées (`Firefighter`, `MotorizedFirefighter`) respectent les contrats de la classe de base `FireExtinguisher`.
4. **Séparation des interfaces (ISP)** :
Les interfaces sont spécifiques (`Board`, `Elements`, `State`).
5. **Inversion des dépendances (DIP)** :
Les classes dépendent d'abstractions, pas d'implémentations spécifiques.
\ 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