diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 95a6293fc078e81ce97e67436766f956d2de8ea9..260a1df48eae1a5eb6b71d1df5d95b561da5e66c 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -10,14 +10,9 @@ import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleGroup; -import javafx.scene.paint.Color; import javafx.util.Duration; import javafx.util.Pair; import model.*; -import model.ExtinguishFire.FireFighter; -import model.Flammable.Fire; -import model.Visitor.FireFighterFinder; -import model.Visitor.FireFinder; import util.Position; import view.Grid; @@ -56,20 +51,13 @@ public class Controller { pauseToggleButton.setSelected(true); } - private void setModel(GameBoard gameBoard) { + /* private void setModel(GameBoard gameBoard) { this.board = requireNonNull(gameBoard, "GameBoard.model is null"); - } + }*/ private void updateBoard(){ - List<Position> updatedPositions = board.updateToNextGeneration(); - List<Pair<Position, BoardElement>> updatedSquares = new ArrayList<>(); - for(Position updatedPosition : updatedPositions){ - List<BoardElement> squareState = board.getState(updatedPosition); - BoardElement boardElement = getViewElement(squareState); - updatedSquares.add(new Pair<>(updatedPosition,boardElement)); - } - grid.repaint(updatedSquares); - updateGenerationLabel(board.stepNumber()); + board.updateToNextGeneration(); + repaintGrid(); } private void repaintGrid(){ @@ -88,19 +76,6 @@ public class Controller { updateGenerationLabel(board.stepNumber()); } - private BoardElement getViewElement(List<BoardElement> squareState) { - for (BoardElement boardElement : squareState) { - if (boardElement.accept(new FireFinder())) { - return new Fire(Color.RED); - } else if (boardElement.accept(new FireFighterFinder())) { - return new FireFighter(Color.BLUE); - } - } - return new EmptyElement(); - - } - - private void initializeTimeline() { Duration duration = new Duration(Controller.PERIOD_IN_MILLISECONDS); EventHandler<ActionEvent> eventHandler = @@ -134,9 +109,10 @@ public class Controller { } public void initialize(int squareWidth, int squareHeight, int columnCount, - int rowCount, int initialFireCount, int initialFirefighterCount) { + int rowCount, int initialFireCount, int initialFirefighterCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - this.setModel(new GameBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); + board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount); + board.initializeElements(); repaintGrid(); } diff --git a/src/main/java/model/Board.java b/src/main/java/model/Board.java index bb089a41406d57b0b2fe3d43b3c040cbd640b6b9..469590ddfbca6597b878794b33c75ebfbae8b5c8 100644 --- a/src/main/java/model/Board.java +++ b/src/main/java/model/Board.java @@ -48,7 +48,7 @@ public interface Board<S> { * * @return A list of positions that have changed during the update. */ - List<Position> updateToNextGeneration(); + void updateToNextGeneration(); /** * Reset the board to its initial state. diff --git a/src/main/java/model/BoardElement.java b/src/main/java/model/BoardElement.java index d81bfbd960bea825dada024453bb4f9e81f8a433..4100f828a2f9ee1ee61bcfa5ac84e75df95168a9 100644 --- a/src/main/java/model/BoardElement.java +++ b/src/main/java/model/BoardElement.java @@ -13,5 +13,5 @@ public interface BoardElement { Color getColor(); Boolean accept(Visitor visitor); - void initialize(int initialElementCount, HashMap<Position, ArrayList<BoardElement>> elementPosition); + void initialize(); } diff --git a/src/main/java/model/Builder/ConcreteGameBuilder.java b/src/main/java/model/Builder/ConcreteGameBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..0c367e38c7129e93b09c75108aa6571cc8c95a2b --- /dev/null +++ b/src/main/java/model/Builder/ConcreteGameBuilder.java @@ -0,0 +1,44 @@ +package model.Builder; + +public class ConcreteGameBuilder implements GameBuilder{ + int firefighter=0; + int fire=0; + int clouds=0; + int motorizedFireFighters=0; + int roads=0; + int mountains=0; + @Override + public GameBuilder setFire(int fires) { + this.fire=fires; + return this; + } + + @Override + public GameBuilder setFireFighter(int fireFighters) { + this.firefighter=fireFighters; + return this; + } + + @Override + public GameBuilder setCloud(int clouds) { + this.clouds=clouds; + return this; + } + + @Override + public GameBuilder setMotorizedFireFighter(int motorizedFireFighters) { + this.motorizedFireFighters=motorizedFireFighters; + return this; + } + + @Override + public GameBuilder setMountain(int mountains) { + this.mountains=mountains; + return this; + } + + @Override + public GameManage build() { + return new GameManage(fire,firefighter,clouds,motorizedFireFighters,roads,mountains); + } +} \ No newline at end of file diff --git a/src/main/java/model/Builder/FireFirefighterBuilder.java b/src/main/java/model/Builder/FireFirefighterBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..5af512c580daf48dd3a43f94d3dd962127381e29 --- /dev/null +++ b/src/main/java/model/Builder/FireFirefighterBuilder.java @@ -0,0 +1,11 @@ +package model.Builder; + +public class FireFirefighterBuilder { + public void Build(int fires, int firefighters) { + ConcreteGameBuilder concreteGameBuilder; + concreteGameBuilder =new ConcreteGameBuilder(); + concreteGameBuilder.setFire(fires) + .setFireFighter(firefighters) + .build(); + } +} diff --git a/src/main/java/model/Builder/GameBuilder.java b/src/main/java/model/Builder/GameBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..603ed19ba8f6b57d6b97439f6f5fef42e56c9488 --- /dev/null +++ b/src/main/java/model/Builder/GameBuilder.java @@ -0,0 +1,14 @@ +package model.Builder; + +public interface GameBuilder { + + model.Builder.GameBuilder setFire(int fire); + model.Builder.GameBuilder setFireFighter(int fireFighter); + model.Builder.GameBuilder setCloud(int cloud); + model.Builder.GameBuilder setMotorizedFireFighter(int motorizedFireFighter); + model.Builder.GameBuilder setMountain(int mountain); + + // TODO: 15/11/2023 la suite + GameManage build(); + +} diff --git a/src/main/java/model/Builder/GameManage.java b/src/main/java/model/Builder/GameManage.java new file mode 100644 index 0000000000000000000000000000000000000000..2a8c2d8759b48eb74e604c441d473ab4fe3e7b86 --- /dev/null +++ b/src/main/java/model/Builder/GameManage.java @@ -0,0 +1,41 @@ +package model.Builder; + +import javafx.scene.paint.Color; +import model.ExtinguishFire.FireFighter; +import model.Flammable.Fire; + +public class GameManage { + private final int fires; + private final int firefighters; + private final int clouds; + private final int motorizedFireFighters; + private final int roads; + private final int mountains; + + + + public GameManage(int fires, int firefighters, int clouds, int motorizedFireFighters, int roads, int mountains) { + this.fires = fires; + this.firefighters = firefighters; + this.clouds = clouds; + this.motorizedFireFighters = motorizedFireFighters; + this.roads = roads; + this.mountains = mountains; + Initialize(); + } + + public void Initialize(){ + for(int i=0;i<fires;i++) { + new Fire(Color.RED); + } + for(int i=0;i<firefighters;i++) { + new FireFighter(Color.BLUE); + } + for(int i=0;i<clouds;i++) { + //new Cloud(Color.GRAY); + } + // TODO: 15/11/2023 la suite .... aussi l'initialisation va changer dans fire et firefighter + } + +} + diff --git a/src/main/java/model/EmptyElement.java b/src/main/java/model/EmptyElement.java index 80cae5ec9935be3f9b2e39f11f9e21a03b38314a..0834ed20164d8952c31219db4eef249683d40d72 100644 --- a/src/main/java/model/EmptyElement.java +++ b/src/main/java/model/EmptyElement.java @@ -19,7 +19,7 @@ public class EmptyElement implements BoardElement{ } @Override - public void initialize(int initialElementCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) { + public void initialize() { } } diff --git a/src/main/java/model/ExtinguishFire/ExtinguishFire.java b/src/main/java/model/ExtinguishFire/ExtinguishFire.java index 491c3b88a886ada6400484863be6549b06f7f3e2..4e5e787dffbd8188a33ba9729a5aed8aa8aa4011 100644 --- a/src/main/java/model/ExtinguishFire/ExtinguishFire.java +++ b/src/main/java/model/ExtinguishFire/ExtinguishFire.java @@ -10,8 +10,6 @@ import java.util.List; public interface ExtinguishFire extends BoardElement { - void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition); - - List<Position> updateFirefighters(GameBoard gameBoard); + void update(GameBoard gameBoard , Position position); } diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java index 155184ba7bdc86161c1c56c68b492ad767421621..0d7aa63706ebff471c18b73527a9f708c2d18126 100644 --- a/src/main/java/model/ExtinguishFire/FireFighter.java +++ b/src/main/java/model/ExtinguishFire/FireFighter.java @@ -2,9 +2,8 @@ package model.ExtinguishFire; import javafx.scene.paint.Color; import model.BoardElement; -import model.Flammable.Fire; import model.GameBoard; -import model.Visitor.FireFighterFinder; +import model.Visitor.CrossMountain; import model.Visitor.FireFinder; import model.Visitor.Visitor; import util.Position; @@ -14,10 +13,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class FireFighter implements ExtinguishFire{ +import static model.GameBoard.elementPosition; + +public class FireFighter implements ExtinguishFire { Color color; public FireFighter(Color color){ this.color=color; + initialize(); } @Override public Color getColor() { @@ -30,70 +32,81 @@ public class FireFighter implements ExtinguishFire{ } @Override - public void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) { - FireFinder fireFinder=new FireFinder(); + public void initialize( ) { + CrossMountain crossMountain=new CrossMountain(); boolean canInitialise; - for (int index = 0; index < initialFireFighterCount; index++) { - Position position = GameBoard.randomPosition(); - if(elementPosition.containsKey(position)) { - for (;;) { - canInitialise = true; - for (BoardElement element : elementPosition.get(position)) { - if (element.accept(fireFinder)) { - canInitialise=false; - break; - } - } - if(canInitialise){ + Position position = GameBoard.randomPosition(); + if(elementPosition.containsKey(position)) { + for (; ; ) { + canInitialise = true; + for (BoardElement element : elementPosition.get(position)) { + if (element.accept(crossMountain)) { + canInitialise = false; break; } - position = GameBoard.randomPosition(); - if(!elementPosition.containsKey(position))break; } - if(elementPosition.containsKey(position)) - elementPosition.get(position).add(new FireFighter(Color.BLUE)); - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(new FireFighter(Color.BLUE)); - elementPosition.put(position,boardElements); + if (canInitialise) { + break; } - continue; + position = GameBoard.randomPosition(); + if (!elementPosition.containsKey(position)) break; + } + if (elementPosition.containsKey(position)) + elementPosition.get(position).add(this); + else { + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + elementPosition.put(position, boardElements); } - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(new FireFighter(Color.BLUE)); - elementPosition.put(position,boardElements); + } + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + elementPosition.put(position,boardElements); } @Override - public List<Position> updateFirefighters(GameBoard gameBoard) { - List<Position> result = new ArrayList<>(); - List<Position> firefighterPositions = new ArrayList<>(); - List<Position> firePositions = new ArrayList<>(); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : gameBoard.getElementPosition().entrySet()) { - for (BoardElement element : entry.getValue()) { - if (element.accept(new FireFighterFinder())) { - firefighterPositions.add(entry.getKey()); - } - if (element.accept(new FireFinder())) { - firePositions.add(entry.getKey()); + public void update(GameBoard gameBoard, Position position) { + + HashMap<Position, ArrayList<BoardElement>> elementPositionCopie = new HashMap<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()){ + elementPositionCopie.put(entry.getKey(),entry.getValue()); + } + List<Position> firePositions = new ArrayList<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPositionCopie.entrySet()) { + for (BoardElement element : entry.getValue()) { + if (element.accept(new FireFinder())) { + firePositions.add(entry.getKey()); + } } } - } - for (Position firefighterPosition : firefighterPositions) { - Position newFirefighterPosition = gameBoard.neighborClosestToFire(firefighterPosition); - gameBoard.getElementPosition().get(newFirefighterPosition).add(new FireFighter(Color.BLUE)); + Position newFirefighterPosition = gameBoard.neighborClosestToFire(position); + if(elementPositionCopie.containsKey(newFirefighterPosition)){ + elementPositionCopie.get(newFirefighterPosition).add(new FireFighter(Color.BLUE)); + } + else{ + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(new FireFighter(Color.BLUE)); + elementPosition.put(newFirefighterPosition,boardElements); + } gameBoard.extinguish(newFirefighterPosition); - result.add(firefighterPosition); - result.add(newFirefighterPosition); List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() .filter(firePositions::contains).toList(); - for(Position firePosition : neighborFirePositions) + for(Position newposition : neighborFirePositions){ + if(elementPositionCopie.containsKey(newposition)){ + elementPosition.get(newposition).add(new FireFighter(Color.BLUE)); + } + else{ + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(new FireFighter(Color.BLUE)); + elementPosition.put(newposition,boardElements); + } + } + + for(Position firePosition : neighborFirePositions) { gameBoard.extinguish(firePosition); - result.addAll(neighborFirePositions); - } - return result; - } + } + } } diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java index 37f5ad36aebf67eecd2e7b918d8845e89822b894..e3bee196be794157e60e9a463f70cda724448502 100644 --- a/src/main/java/model/Flammable/Fire.java +++ b/src/main/java/model/Flammable/Fire.java @@ -3,6 +3,8 @@ package model.Flammable; import javafx.scene.paint.Color; import model.BoardElement; import model.GameBoard; +import model.Visitor.CrossMountain; +import model.Visitor.CrossRoad; import model.Visitor.FireFinder; import model.Visitor.Visitor; import util.Position; @@ -15,6 +17,7 @@ public class Fire implements Flammable{ public Fire(Color color){ this.color = color; + initialize(); } @Override @@ -28,61 +31,68 @@ public class Fire implements Flammable{ } @Override - public void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) { + public void initialize() { FireFinder fireFinder=new FireFinder(); Position position = GameBoard.randomPosition(); boolean canInitialise; - for (int index = 0; index < initialFireCount; index++) { - if(elementPosition.containsKey(position)) { - for (;;) { - canInitialise=true; - for (BoardElement element : elementPosition.get(position)) { - if (element.accept(fireFinder)) { - canInitialise=false; - break; - } - } - if(canInitialise){ + if(GameBoard.elementPosition.containsKey(position)) { + for (;;) { + canInitialise=true; + for (BoardElement element : GameBoard.elementPosition.get(position)) { + if (element.accept(fireFinder)) { + canInitialise=false; break; } - position = GameBoard.randomPosition(); - if(!elementPosition.containsKey(position))break; - } - if(elementPosition.containsKey(position)) - elementPosition.get(position).add(new Fire(Color.RED)); - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(new Fire(Color.RED)); - elementPosition.put(position,boardElements); - } - continue; + } + if(canInitialise){ + break; + } + position = GameBoard.randomPosition(); + if(!GameBoard.elementPosition.containsKey(position))break; } - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(new Fire(Color.RED)); - elementPosition.put(position,boardElements); + if(GameBoard.elementPosition.containsKey(position)) + GameBoard.elementPosition.get(position).add(this); + else{ + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + GameBoard.elementPosition.put(position,boardElements); } + } + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + GameBoard.elementPosition.put(position,boardElements); } - @Override - public List<Position> updateFlammable(GameBoard gameBoard) { - FireFinder fireFinder=new FireFinder(); - List<Position> result = new ArrayList<>(); - if (gameBoard.stepNumber() % 2 == 0) { - List<Position> newFirePositions = new ArrayList<>(); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : gameBoard.getElementPosition().entrySet()){ - for(BoardElement element : entry.getValue()){ - if (element.accept(fireFinder)){ - newFirePositions.addAll(gameBoard.neighbors(entry.getKey())); + @Override // TODO: 15/11/2023 + public void update(GameBoard gameBoard , Position position) { + + if (gameBoard.stepNumber() % 2 == 0) { + List<Position> newFirePositions = new ArrayList<>(); + newFirePositions.addAll(gameBoard.neighbors(position)); + for(Position newPosition : newFirePositions){ + if(GameBoard.elementPosition.containsKey(newPosition)) { + for(BoardElement boardElement : GameBoard.elementPosition.get(newPosition)){ + if(boardElement.accept(new FireFinder()) && boardElement.accept(new CrossRoad()) && boardElement.accept(new CrossMountain())){ + break; + } + else if(!boardElement.accept( new FireFinder())&& !boardElement.accept(new CrossRoad()) && !boardElement.accept(new CrossMountain())){ + GameBoard.elementPosition.get(newPosition).add(this); } } + } - for(Position position : newFirePositions){ - gameBoard.getElementPosition().get(position).add(new Fire(Color.RED)); + else{ + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + GameBoard.elementPosition.put(newPosition,boardElements); + System.out.println(GameBoard.elementPosition.get(position).get(0).getColor()); } - result.addAll(newFirePositions); + } - return result; } + } +} + diff --git a/src/main/java/model/Flammable/Flammable.java b/src/main/java/model/Flammable/Flammable.java index 89887060fafc0c1685ddc93d7aa76c65e7d718bd..b21f82b9a9ddc487a95a82902a89d4631ae608ce 100644 --- a/src/main/java/model/Flammable/Flammable.java +++ b/src/main/java/model/Flammable/Flammable.java @@ -10,7 +10,5 @@ import java.util.List; public interface Flammable extends BoardElement{ - void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition); - - List<Position> updateFlammable(GameBoard gameBoard); + void update(GameBoard gameBoard, Position position); } diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java index 153a342a461f6a136e7370e504026c9efdd7e265..216b267c9659dee78e790d0bb092e3ea284f2546 100644 --- a/src/main/java/model/GameBoard.java +++ b/src/main/java/model/GameBoard.java @@ -1,65 +1,82 @@ package model; -import javafx.scene.paint.Color; -import model.ExtinguishFire.FireFighter; -import model.Flammable.Fire; +import model.Builder.FireFirefighterBuilder; +import model.Builder.GameManage; +import model.ExtinguishFire.ExtinguishFire; +import model.Flammable.Flammable; import model.Visitor.FireFinder; import util.Position; import java.util.*; -public class GameBoard implements Board<List<BoardElement>>{ +public class GameBoard implements Board{ static int columnCount; static int rowCount; - private final int initialFireCount; - private final int initialFirefighterCount; - + private int initialFireCount; + private int initialFirefighterCount; private int step = 0; static Random randomGenerator = new Random(); - private HashMap<Position, ArrayList<BoardElement>> elementPosition; public HashMap<Position, ArrayList<BoardElement>> getElementPosition() { return elementPosition; } + public static HashMap<Position, ArrayList<BoardElement>> elementPosition=new HashMap<>(); + public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.initialFireCount = initialFireCount; this.initialFirefighterCount = initialFirefighterCount; - initializeElements(); } - public void initializeElements() { - elementPosition=new HashMap<>(); - Fire fire=new Fire(Color.RED); - FireFighter fireFighter=new FireFighter(Color.BLUE); - fire.initialize(initialFireCount,elementPosition); - fireFighter.initialize(initialFirefighterCount,elementPosition); + + public void initializeElements(){ + FireFirefighterBuilder fireFirefighterBuilder=new FireFirefighterBuilder(); + fireFirefighterBuilder.Build(this.initialFireCount,this.initialFirefighterCount); } public static Position randomPosition() { return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount)); } @Override - public List<Position> updateToNextGeneration() { - List<Position> result = new FireFighter(Color.BLUE).updateFirefighters(this); - result.addAll(new Fire(Color.RED).updateFlammable(this)); + public void updateToNextGeneration() { + HashMap<Position, ArrayList<BoardElement>> elementPositionCopie = new HashMap<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : this.elementPosition.entrySet()){ + elementPositionCopie.put(entry.getKey(),entry.getValue()); + } + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPositionCopie.entrySet()){ + for(BoardElement element : entry.getValue()){ + + if (!element.accept(new FireFinder())){ + ExtinguishFire element1 = (ExtinguishFire) element; + element1.update(this,entry.getKey()); + } + } + } + /*for (Map.Entry<Position, ArrayList<BoardElement>> entryCopie : elementPositionCopie.entrySet()){ + for(BoardElement element : entryCopie.getValue()){ + + if (element.accept(new FireFinder())){ + Flammable element1 = (Flammable) element; + element1.update(this,entryCopie.getKey()); + } + } + }*/ + step++; - return result; + + } @Override - public List<BoardElement> getState(Position position) { - return elementPosition.get(position); + public Object getState(Position position) { + return null; } @Override - public void setState(List<BoardElement> state, Position position) { - for(int index = 0 ; index<elementPosition.get(position).size() ; index++){ - elementPosition.get(position).remove(index); + public void setState(Object state, Position position) { - } } @Override @@ -76,6 +93,7 @@ public class GameBoard implements Board<List<BoardElement>>{ @Override public void reset() { step = 0; + elementPosition.clear(); initializeElements(); } @@ -99,7 +117,7 @@ public class GameBoard implements Board<List<BoardElement>>{ Set<Position> seen = new HashSet<>(); HashMap<Position, Position> firstMove = new HashMap<>(); Queue<Position> toVisit = new LinkedList<>(neighbors(position)); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()){ + for (Map.Entry<Position, ArrayList<BoardElement>> entry : this.elementPosition.entrySet()){ for(BoardElement element : entry.getValue()){ if (element.accept(fireFinder)){ firePositions.add(entry.getKey()); @@ -124,13 +142,12 @@ public class GameBoard implements Board<List<BoardElement>>{ public void extinguish(Position position) { FireFinder fireFinder = new FireFinder(); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()){ - for(BoardElement element : entry.getValue()){ - if (element.accept(fireFinder)){ - entry.getValue().remove(element); + for (BoardElement boardElement : elementPosition.get(position)){ + if (boardElement.accept(fireFinder)){ + this.elementPosition.get(position).remove(boardElement); + break; } } } } -} diff --git a/src/main/java/model/Visitor/FireFighterFinder.java b/src/main/java/model/Visitor/FireFighterFinder.java deleted file mode 100644 index ebef4b2b5ff00091c1ad5d615cf9adad36308131..0000000000000000000000000000000000000000 --- a/src/main/java/model/Visitor/FireFighterFinder.java +++ /dev/null @@ -1,34 +0,0 @@ -package model.Visitor; - -import model.ExtinguishFire.FireFighter; -import model.ExtinguishFire.MotorizedFireFighter; -import model.Flammable.Fire; -import model.Obstacle.Mountain; -import model.Obstacle.Road; - -public class FireFighterFinder implements Visitor{ - - public boolean visit(Fire fire) { - return false; - } - - @Override - public boolean visit(FireFighter fireFighter) { - return true; - } - - @Override - public boolean visit(MotorizedFireFighter motorizedFireFighter) { - return false; - } - - @Override - public boolean visit(Mountain mountain) { - return false; - } - - @Override - public boolean visit(Road road) { - return false; - } -}