Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • m19023837/firefighter-starter-mansour-chadi-chahine-rami
  • r24025701/firefighterstarter
  • n24026202/firefighterstarter
  • couetoux.b/firefighterstarter
  • b23027938/firefighterstarter
  • z20039716/fire-fighter
  • a18023913/firefighterstarter
  • o22010261/firefighterstarter
  • b22015516/firefighterstarter
  • alaboure/firefighter-template
  • p21211679/firefighter-luis-parra-yanis-lounadi
  • v23014723/firefighter-project
  • k20014011/firefighter-template
  • m23022217/firefighter-template
  • p20006624/firefighter-template
  • l21221596/firefighter-template
  • s21232465/firefighter-template
  • y21224754/firefighter-template
  • w21225935/firefighter-template
  • h22023886/firefighter-template
  • b21221604/firefighter-template-boucenna-yacine-zeghar-mohamed-lamine
  • c23025119/firefighterstarter
  • b20031964/firefighterstarter
23 results
Select Git revision
Loading items
Show changes
Commits on Source (53)
Showing
with 199 additions and 0 deletions
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
#Fri Nov 08 15:52:17 CET 2024
gradle.version=8.10.2
File added
File added
@startuml
' Enum: ModelElement
enum ModelElement {
FIREFIGHTER
FIRE
CLOUD
ROAD
EMPTY
MOUNTAIN
FIRETRUCK
ROCKS
}
' Class: Position
class Position {
- row: int
- column: int
+ Position(row: int, column: int)
+ getRow(): int
+ getColumn(): int
}
' Interface: Strategy
interface Strategy {
+ update(): List<Position>
+ getModelPositions(): List<Position>
+ getFirePositions(): Set<Position>
}
' Class: FireTruckMovementStrategy
class FireTruckMovementStrategy {
- targetStrategy: TargetStrategy
- fireTruckPositions: List<Position>
- firePositions: Set<Position>
- neighbors: Map<Position, List<Position>>
+ FireTruckMovementStrategy(firefighterPositions: List<Position>, firePositions: Set<Position>, neighbors: Map<Position, List<Position>>)
+ update(): List<Position>
+ nextValidPosition(currentPosition: Position): Position
+ extinguishNearbyFires(position: Position, modifiedPositions: List<Position>)
+ extinguishAll(positions: List<Position>)
}
' Class: SimpleFireSpreadStrategy
class SimpleFireSpreadStrategy {
- firePositions: Set<Position>
- neighbors: Map<Position, List<Position>>
- mountainPositions: Set<Position>
- roadPositions: Set<Position>
- rocksPositions: Set<Position>
- step: int
+ SimpleFireSpreadStrategy(firePositions: Set<Position>, neighbors: Map<Position, List<Position>>, mountainPositions: Set<Position>, roadPositions: Set<Position>, rocksPositions: Set<Position>, step: int)
+ update(): List<Position>
+ spreadFire(firePosition: Position, newFirePositions: Set<Position>)
+ canPropagateTo(newPosition: Position): boolean
}
' Class: Initializer
class Initializer {
- columnCount: int
- rowCount: int
- initialFireCount: int
- initialFirefighterCount: int
- initialRoadCount: int
- initialCloudCount: int
- initialMountainCount: int
- initialFireTruckCount: int
- initialRocksCount: int
- positions: Position[][]
- neighbors: Map<Position, List<Position>>
- firePositions: Set<Position>
- firefighterPositions: List<Position>
- RoadPositions: List<Position>
- cloudPositions: List<Position>
- mountainsPositions: Set<Position>
- FireTruckPositions: List<Position>
- rocksPositions: Set<Position>
- randomGenerator: Random
+ Initializer(columnCount: int, rowCount: int, initialFireCount: int, initialFirefighterCount: int, initialRoadCount: int, initialCloudCount: int, initialMountainCount: int, initialRocksCount: int, initialFireTruckCount: int)
+ initializePositions(): void
+ initializeNeighbors(): void
+ initializeElements(): void
+ addRandomPositions(targetCollection: Collection<Position>, count: int)
}
' Class: NeighborManager
class NeighborManager {
- neighbors: Map<Position, List<Position>>
+ NeighborManager(rowCount: int, columnCount: int)
+ getNeighbors(): Map<Position, List<Position>>
+ getAdjacentPositions(position: Position): List<Position>
}
' Class: TargetStrategy
class TargetStrategy {
+ calculateTarget(fireTruckPosition: Position, firePositions: Set<Position>): Position
}
' Class: Board
class Board {
- positions: Position[][]
- modelElements: Map<Position, ModelElement>
+ Board(rowCount: int, columnCount: int)
+ setModelElement(position: Position, element: ModelElement): void
+ getModelElement(position: Position): ModelElement
}
' Class: BoardManager
class BoardManager {
- board: Board
- initializer: Initializer
+ BoardManager(board: Board, initializer: Initializer)
+ initializeBoard(): void
+ updateBoard(): void
}
' Class: CloudStrategy
class CloudStrategy {
- cloudPositions: Set<Position>
+ CloudStrategy(cloudPositions: Set<Position>)
+ updateCloud(): Set<Position>
+ addCloudPosition(position: Position): void
}
' Class: FirefighterBoard
class FirefighterBoard {
- firefighterPositions: List<Position>
+ FirefighterBoard(firefighterPositions: List<Position>)
+ updateFirefighterPositions(): void
+ addFirefighter(position: Position): void
}
' Class: FirefighterMovementStrategy
class FirefighterMovementStrategy {
- firefighterPositions: List<Position>
- neighbors: Map<Position, List<Position>>
+ FirefighterMovementStrategy(firefighterPositions: List<Position>, neighbors: Map<Position, List<Position>>)
+ update(): List<Position>
+ nextValidPosition(currentPosition: Position): Position
+ moveToNextPosition(): Position
}
' Relationship: FireTruckMovementStrategy implements Strategy
FireTruckMovementStrategy -|> Strategy : implements
' Relationship: SimpleFireSpreadStrategy implements Strategy
SimpleFireSpreadStrategy -|> Strategy : implements
' Relationship: Initializer uses NeighborManager
Initializer --> NeighborManager : uses
' Relationship: FireTruckMovementStrategy and SimpleFireSpreadStrategy depend on Position
FireTruckMovementStrategy --> Position : depends on
SimpleFireSpreadStrategy --> Position : depends on
' Relationship: FireTruckMovementStrategy and SimpleFireSpreadStrategy depend on neighbors
FireTruckMovementStrategy --> Map : depends on
SimpleFireSpreadStrategy --> Map : depends on
' Relationship: FireTruckMovementStrategy uses TargetStrategy
FireTruckMovementStrategy --> TargetStrategy : uses
' Relationship: ModelElement is an enum
ModelElement ..> FireTruckMovementStrategy : used by
ModelElement ..> SimpleFireSpreadStrategy : used by
' Relationship: Position used by Initializer for grid setup
Position --> Initializer : used by
' Relationship: Position used by FireTruckMovementStrategy and SimpleFireSpreadStrategy
Position --> FireTruckMovementStrategy : used by
Position --> SimpleFireSpreadStrategy : used by
' Relationship: Board is used by BoardManager
Board --> BoardManager : used by
' Relationship: CloudStrategy uses Position
CloudStrategy --> Position : uses
' Relationship: BoardManager uses Board and Initializer
BoardManager --> Board : uses
BoardManager --> Initializer : uses
' Relationship: FirefighterMovementStrategy uses Position
FirefighterMovementStrategy --> Position : uses
' Relationship: FirefighterMovementStrategy and FirefighterBoard use Board
FirefighterBoard --> Board : uses
FirefighterMovementStrategy --> Board : uses
@enduml
Project Repports/Diagrame_img.png

431 KiB

File added
Dans ce TP nous avons ajouter deux classes SimpleFireFighterStrategy
et SimpleFireSpreadStrategy qui implementent leurs Strategy respectivent
De plus nous avons essayé de faire le FirefighterBoard qui soit compatible avec Controller
nous avons ajouté de plus des getters dans util.Position
Nous allons finir le FirefighterBoard la semaine prochaine ainsi que implementer util.TargetStrategy dans notre code
\ No newline at end of file