Skip to content
Snippets Groups Projects
Commit 2c31c843 authored by BACHTARZI Imed eddine's avatar BACHTARZI Imed eddine
Browse files

draft 8/11/2024

parent 262bcd35
No related branches found
No related tags found
No related merge requests found
Pipeline #38196 failed
Showing with 123 additions and 3 deletions
File added
Manifest-Version: 1.0
Manifest-Version: 1.0
Main-Class: app.SimulatorMain
package model;
public class CloudManager {
}
package model;
public class FireManager extends Manager{
public FireManager(FirefighterBoard board) {
super(board,ModelElement.FIRE, new ModelElement[]{ModelElement.ROAD, ModelElement.MOUNTAIN});
}
@Override
public void update() {
;
}
}
......@@ -10,7 +10,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final int rowCount;
private final int initialFireCount;
private final int initialFirefighterCount;
private final TargetStrategy targetStrategy = new TargetStrategy();
private final model.TargetStrategy targetStrategy = new model.TargetStrategy();
private List<Position> firefighterPositions;
private Set<Position> firePositions;
private Map<Position, List<Position>> neighbors = new HashMap();
......@@ -130,7 +130,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
firePositions.remove(position);
}
@Override
public void setState(List<ModelElement> state, Position position) {
firePositions.remove(position);
......
package model;
import util.Position;
import java.util.ArrayList;
import java.util.List;
public abstract class FirefighterManager extends Manager {
private List<Position> firefighterPositions;
private int speed;
public FirefighterManager(FirefighterBoard board,ModelElement managed,ModelElement[] obstacle,int speed) {
super(board,managed,obstacle);
this.speed=speed;
}
@Override
public void update() {
for(int i=0;i<speed;i++) {
partialUpdate(firefighterPositions);
}
}
public List<Position> partialUpdate(List<Position> positions) {
List<Position> modifiedPosition = new ArrayList<>();
List<Position> firefighterNewPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition =
targetStrategy.neighborClosestToFire(firefighterPosition,
firePositions, neighbors);
firefighterNewPositions.add(newFirefighterPosition);
extinguish(newFirefighterPosition);
modifiedPosition.add(firefighterPosition);
modifiedPosition.add(newFirefighterPosition);
List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream()
.filter(firePositions::contains).toList();
for (Position firePosition : neighborFirePositions)
extinguish(firePosition);
modifiedPosition.addAll(neighborFirePositions);
}
firefighterPositions = firefighterNewPositions;
return modifiedPosition;
}
}
package model;
import java.util.ArrayList;
public abstract class Manager {
private ModelElement managed;
private ModelElement[] Obstacles;
private FirefighterBoard board;
public Manager(FirefighterBoard board,ModelElement managed,ModelElement[] obstacle) {
this.board = board;
this.managed = managed;
this.Obstacles = obstacle;
}
public abstract void update();
}
package model;
public enum ModelElement {
FIREFIGHTER, FIRE
FIREFIGHTER,MOTORIZEDFIREFIGHTER,FIRE,CLOUD,ROAD,ROCK,MOUNTAIN
}
package model;
public class MotorizedFireFighter extends FirefighterManager {
public MotorizedFireFighter(FirefighterBoard board) {
super( board,
ModelElement.MOTORIZEDFIREFIGHTER,
new ModelElement[]{ModelElement.MOUNTAIN},
2);
}
}
package model;
public class Rock {
private int life;
public Rock() {
life=4;
}
public int getLife() {
return life;
}
public void getDamage() {
life--;
}
}
package model;
public class RockManager {
}
package model;
public class StandardFireFighter extends FirefighterManager {
public StandardFireFighter(FirefighterBoard board) {
super( board,
ModelElement.FIREFIGHTER,
new ModelElement[]{ModelElement.MOUNTAIN},
1);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment