From 1ecf9f7aa817aa7e4db380e368df1f2d43fbdf97 Mon Sep 17 00:00:00 2001 From: m23022217 <ilyas.maazouz@etu.univ-amu.fr> Date: Mon, 20 Nov 2023 15:48:33 +0100 Subject: [PATCH] FTHFGHFGHFGHFH --- src/main/java/controller/Controller.java | 15 ++++-- src/main/java/newmodel/Extinguisher.java | 8 ++- src/main/java/newmodel/Fboard.java | 56 ++++++++++++++------- src/main/java/newmodel/Fire.java | 32 +++++++----- src/main/java/newmodel/FireFighter.java | 16 ++++-- src/main/java/newmodel/FireManager.java | 15 ------ src/main/java/newmodel/MotoFireFighter.java | 8 ++- src/main/java/newmodel/Nuages.java | 12 +++-- src/main/java/newmodel/Pompiers.java | 17 +++++-- src/main/java/newmodel/item.java | 7 ++- 10 files changed, 123 insertions(+), 63 deletions(-) delete mode 100644 src/main/java/newmodel/FireManager.java diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 462ef39..d31718d 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -15,6 +15,7 @@ import javafx.util.Pair; import model.Board; import model.ModelElement; import model.FirefighterBoard; +import newmodel.*; import util.Position; import view.Grid; import view.ViewElement; @@ -40,7 +41,7 @@ public class Controller { @FXML private Grid<ViewElement> grid; private Timeline timeline; - private Board<List<ModelElement>> board; + private Fboard board; //this function initialise the frame of the execution of updateboard function and adds the play&pause buttons @@ -58,8 +59,8 @@ public class Controller { //this function checks if our model of the class firefighterboard is not null and raises an exception if so // and affect the model to board - private void setModel(FirefighterBoard firefighterBoard) { - this.board = requireNonNull(firefighterBoard, "firefighter.model is null"); + private void setModel(Fboard board) { + this.board = requireNonNull(board, "firefighter.model is null"); } //this function is a combination of multiple functions that re update the board elements get the new positions and colors of new elements @@ -149,7 +150,13 @@ public class Controller { public void initialize(int squareWidth, int squareHeight, int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); + List<item> items= new ArrayList<>(); + Fboard b=new Fboard(columnCount,rowCount); + List<item> list= new ArrayList<>(); + list.add(new Fire(initialFireCount,b)); + list.add(new FireFighter(initialFirefighterCount,b)); + b.setItems(list); + this.setModel(b); repaintGrid(); } diff --git a/src/main/java/newmodel/Extinguisher.java b/src/main/java/newmodel/Extinguisher.java index e9f7c6e..ec4eccd 100644 --- a/src/main/java/newmodel/Extinguisher.java +++ b/src/main/java/newmodel/Extinguisher.java @@ -1,17 +1,21 @@ package newmodel; +import model.ModelElement; import newmodel.Fboard; import util.Position; import java.util.List; public abstract class Extinguisher implements item { + final int ID=1; + + public abstract List<Position> update(); public abstract void extinguish(Position position); public abstract void setState(); - public abstract String getState(); + public abstract ModelElement getState(); public abstract void initialize(); public abstract List<Position> getPositions(); } -} + diff --git a/src/main/java/newmodel/Fboard.java b/src/main/java/newmodel/Fboard.java index 6199065..059764b 100644 --- a/src/main/java/newmodel/Fboard.java +++ b/src/main/java/newmodel/Fboard.java @@ -13,15 +13,17 @@ public class Fboard { private List<item> items; - public Fboard(int columnCount, int rowCount, Fire fire ,List<item> items) { + public Fboard(int columnCount, int rowCount) { this.columnCount = columnCount; this.rowCount = rowCount; - this.items=items; - } + } public int rowCount() { return rowCount; } + public void setItems(List<item> s){ + this.items=s; + } public int columnCount() { return columnCount; @@ -29,8 +31,16 @@ public class Fboard { public List<Position> updateToNextGeneration() { List<Position> result = new ArrayList<>(); - for(item item : items) - result.addAll(item.update()); + for(item item : items){ + if(item.getID()==1){ + result.addAll(item.update()); + } + } + for(item item : items){ + if(item.getID()==0 && step % 2 ==0){ + result.addAll(item.update()); + } + } step++; return result; } @@ -43,9 +53,15 @@ public class Fboard { initializeElements(); } public void initializeElements() { - fire.initialize(); - for(item e: extinguishers) { - e.initialize(); + for(item e: items) { + if(e.getID()==0){ + e.initialize(); + } + } + for(item e:items){ + if(e.getID()==1){ + e.initialize(); + } } } public int getStep(){ @@ -59,8 +75,14 @@ public class Fboard { return this.rowCount; } - public FireManager getFire(){ - return this.fire; + public Fire getFire() { + Fire x = null; + for (item e : items) { + if(e.getID()==0){ + x= (Fire) e; + } + } + return x; } public List<Position> neighbors(Position position) { List<Position> list = new ArrayList<>(); @@ -79,7 +101,7 @@ public class Fboard { firstMove.put(initialMove, initialMove); while (!toVisit.isEmpty()) { Position current = toVisit.poll(); - if (this.fire.getFirepositions().contains(current)) + if (this.getFire().getPositions().contains(current)) return firstMove.get(current); for (Position adjacent : neighbors(current)) { if (seen.contains(adjacent)) continue; @@ -91,15 +113,15 @@ public class Fboard { return position; } - public List<String> getState(Position position){ - List<String> result = new ArrayList<>(); - for (Extinguisher e :extinguishers){ - if (e.getPositions().equals(position)){ + public List<ModelElement> getState(Position position){ + List<ModelElement> result = new ArrayList<>(); + for (item e :items){ + if (e.getPositions().equals(position) && e.getID()==1){ result.add(e.getState()); } } - if(fire.containsFire(position)) - result.add(fire.getState()); + if(getFire().containsFire(position)) + result.add(getFire().getState()); return result; } diff --git a/src/main/java/newmodel/Fire.java b/src/main/java/newmodel/Fire.java index 2876058..3e86218 100644 --- a/src/main/java/newmodel/Fire.java +++ b/src/main/java/newmodel/Fire.java @@ -1,18 +1,21 @@ package newmodel; +import model.ModelElement; import util.Position; import java.util.*; -public class Fire extends FireManager { +public class Fire implements item{ private final int initialFireCount; - private Set<Position> firePositions; - private String state; + private List<Position> firePositions; + private ModelElement state; private final Random randomGenerator = new Random(); private final Fboard board; + private final int ID=0; + public Fire(int initialFireCount,Fboard b) { this.initialFireCount = initialFireCount; this.board=b; @@ -21,32 +24,41 @@ public class Fire extends FireManager { public List<Position> update() { List<Position> result = new ArrayList<>(); - if (board.getStep() % 2 == 0) { List<Position> newFirePositions = new ArrayList<>(); for (Position fire : firePositions) { newFirePositions.addAll(board.neighbors(fire)); } firePositions.addAll(newFirePositions); result.addAll(newFirePositions); - } + return result; } public void setState() { - state="Fire"; + state=ModelElement.FIRE; } - public String getState() { + public ModelElement getState() { return state; } + public int getID() { + return this.ID; + } + public void initialize() { - firePositions = new HashSet<>(); + firePositions = new ArrayList<>(); for (int index = 0; index < initialFireCount; index++) firePositions.add(randomPosition()); } + + @Override + public List<Position> getPositions() { + return firePositions; + } + public Position randomPosition() { return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount)); } @@ -55,11 +67,7 @@ public class Fire extends FireManager { firePositions.remove(position); } - public Set<Position> getFirepositions(){ - return firePositions; - } - @Override public boolean containsFire(Position position) { if (firePositions.contains(position)) { return true; diff --git a/src/main/java/newmodel/FireFighter.java b/src/main/java/newmodel/FireFighter.java index 82a638d..c42ee69 100644 --- a/src/main/java/newmodel/FireFighter.java +++ b/src/main/java/newmodel/FireFighter.java @@ -1,11 +1,12 @@ package newmodel; +import model.ModelElement; import util.Position; import java.util.ArrayList; import java.util.List; import java.util.Random; -public class FireFighter implements Extinguisher { - private String state; +public class FireFighter extends Extinguisher { + private ModelElement state; private final Fboard board; private List<Position> firefighterPositions; private final Random randomGenerator = new Random(); @@ -27,7 +28,7 @@ public class FireFighter implements Extinguisher { result.add(firefighterPosition); result.add(newFirefighterPosition); List<Position> neighborFirePositions = board.neighbors(newFirefighterPosition).stream() - .filter(board.getFire().getFirepositions()::contains).toList(); //this code create a list filtred with only the fire positions that are close to the newfirefighter position + .filter(board.getFire().getPositions()::contains).toList(); //this code create a list filtred with only the fire positions that are close to the newfirefighter position for(Position firePosition : neighborFirePositions) //and exist in the firepositions list also extinguish(firePosition); result.addAll(neighborFirePositions); @@ -43,14 +44,19 @@ public class FireFighter implements Extinguisher { public void setState() { - state="FireFighter"; + state= ModelElement.FIREFIGHTER; } - public String getState() { + public ModelElement getState() { return state; } + @Override + public int getID() { + return this.ID; + } + public void initialize() { firefighterPositions = new ArrayList<>(); for (int index = 0; index < initialFirefighterCount; index++) diff --git a/src/main/java/newmodel/FireManager.java b/src/main/java/newmodel/FireManager.java deleted file mode 100644 index 096730c..0000000 --- a/src/main/java/newmodel/FireManager.java +++ /dev/null @@ -1,15 +0,0 @@ -package newmodel; - -import util.Position; - -import java.util.List; -import java.util.Set; - -public abstract class FireManager implements item{ - public abstract List<Position> update(); - public abstract void extinguish(Position position); - public abstract Set<Position> getFirepositions(); - public abstract boolean containsFire(Position position); - public abstract void setState(); - public abstract String getState(); -} diff --git a/src/main/java/newmodel/MotoFireFighter.java b/src/main/java/newmodel/MotoFireFighter.java index bc4e60f..099e1ee 100644 --- a/src/main/java/newmodel/MotoFireFighter.java +++ b/src/main/java/newmodel/MotoFireFighter.java @@ -1,5 +1,6 @@ package newmodel; +import model.ModelElement; import util.Position; import java.util.List; @@ -21,10 +22,15 @@ public class MotoFireFighter extends Extinguisher { } @Override - public String getState() { + public ModelElement getState() { return null; } + @Override + public int getID() { + return 0; + } + @Override public void initialize() { diff --git a/src/main/java/newmodel/Nuages.java b/src/main/java/newmodel/Nuages.java index fa2182e..d3e3c6a 100644 --- a/src/main/java/newmodel/Nuages.java +++ b/src/main/java/newmodel/Nuages.java @@ -1,5 +1,6 @@ package newmodel; +import model.ModelElement; import util.Position; import java.util.ArrayList; @@ -7,7 +8,7 @@ import java.util.List; import java.util.Random; public class Nuages extends Extinguisher{ - private String state; + private ModelElement state; private final Fboard board; private List<Position> nuagesPositions; private final Random randomGenerator = new Random(); @@ -42,14 +43,19 @@ public class Nuages extends Extinguisher{ public void setState() { - state="Nuage"; + state=ModelElement.FIREFIGHTER; } - public String getState() { + public ModelElement getState() { return state; } + @Override + public int getID() { + return 0; + } + public void initialize() { nuagesPositions = new ArrayList<>(); diff --git a/src/main/java/newmodel/Pompiers.java b/src/main/java/newmodel/Pompiers.java index 2cb99ea..3664e48 100644 --- a/src/main/java/newmodel/Pompiers.java +++ b/src/main/java/newmodel/Pompiers.java @@ -1,5 +1,6 @@ package newmodel; +import model.ModelElement; import util.Position; import java.util.List; @@ -7,7 +8,7 @@ import java.util.Random; public class Pompiers extends Extinguisher{ - private String state; + private ModelElement state; private final Fboard board; private List<Position> Pompiers; private final Random randomGenerator = new Random(); @@ -26,20 +27,30 @@ public class Pompiers extends Extinguisher{ } + @Override + public List<Position> update() { + return null; + } + public void extinguish(Position position) { } public void setState() { - this.state="Pompiers"; + this.state=ModelElement.FIREFIGHTER; } - public String getState() { + public ModelElement getState() { return state; } + @Override + public int getID() { + return 0; + } + public void initialize() { diff --git a/src/main/java/newmodel/item.java b/src/main/java/newmodel/item.java index 8fd8c68..d4d53c7 100644 --- a/src/main/java/newmodel/item.java +++ b/src/main/java/newmodel/item.java @@ -1,5 +1,6 @@ package newmodel; +import model.ModelElement; import util.Position; import java.util.List; @@ -7,5 +8,9 @@ import java.util.List; public interface item { public List<Position> update(); void setState(); - String getState(); + public ModelElement getState(); + + public int getID(); + public void initialize(); + public List<Position> getPositions(); } -- GitLab