diff --git a/src/main/java/model/Box.java b/src/main/java/model/Box.java new file mode 100644 index 0000000000000000000000000000000000000000..39d410416cac6b8269ca4d9c070dce4f8dcfeb26 --- /dev/null +++ b/src/main/java/model/Box.java @@ -0,0 +1,6 @@ +package model; + +public interface Box { + + +} diff --git a/src/main/java/model/Extinguisher.java b/src/main/java/model/Extinguisher.java new file mode 100644 index 0000000000000000000000000000000000000000..4e1592820d21b738ce84a9df80f95f5b30e1f51e --- /dev/null +++ b/src/main/java/model/Extinguisher.java @@ -0,0 +1,43 @@ +package model; + +import util.Position; + +import java.util.ArrayList; +import java.util.List; + +public abstract class Extinguisher { + private Position position; + + public Extinguisher(Position position){ + this.position = position; + } + public List<Position> neighbors(Position position, FirefighterBoard board){ + List<Position> list = new ArrayList<>(); + if (position.row() > 0) list.add(new Position(position.row() - 1, position.column())); + if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1)); + if (position.row() < board.rowCount() - 1) list.add(new Position(position.row() + 1, position.column())); + if (position.column() < board.columnCount() - 1) list.add(new Position(position.row(), position.column() + 1)); + return list; + } + + public Position position() { + return position; + } + + + void update(FirefighterBoard board){ + move(board); + extinguish(board); + } + + private void extinguish(FirefighterBoard board) { + List<Item> itemList = board.itemList(); + List<Position> neighborslist = neighbors(position, board); + for (Position neighborsposition: neighborslist) { + itemList.removeIf(item -> neighborsposition == item.position() && item instanceof Fire); + + } + } + + abstract void move(FirefighterBoard board); +} diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java new file mode 100644 index 0000000000000000000000000000000000000000..98512a2010975bb5049100c5d91fb06ee8e52d95 --- /dev/null +++ b/src/main/java/model/Fire.java @@ -0,0 +1,37 @@ +package model; + +import util.Position; + +import java.util.ArrayList; +import java.util.List; + +public class Fire implements Item{ + + private Position position; + + public Fire(Position position) { + this.position = position; + } + + @Override + public void update(FirefighterBoard board) { + List<Position> neighborslist = neighbors(position, board); + for (Position neighborposition : neighborslist) { + board.itemList().add(new Fire(neighborposition)); + } + } + + public List<Position> neighbors(Position position, FirefighterBoard board){ + List<Position> list = new ArrayList<>(); + if (position.row() > 0) list.add(new Position(position.row() - 1, position.column())); + if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1)); + if (position.row() < board.rowCount() - 1) list.add(new Position(position.row() + 1, position.column())); + if (position.column() < board.columnCount() - 1) list.add(new Position(position.row(), position.column() + 1)); + return list; + } + + @Override + public Position position() { + return null; + } +} diff --git a/src/main/java/model/Firefighter.java b/src/main/java/model/Firefighter.java new file mode 100644 index 0000000000000000000000000000000000000000..3fa26bf07c679297159f973e032f013624e9d218 --- /dev/null +++ b/src/main/java/model/Firefighter.java @@ -0,0 +1,19 @@ +package model; + +import util.Position; + +public class Firefighter extends Extinguisher implements Item{ + public Firefighter(Position position) { + super(position); + } + + @Override + void move(FirefighterBoard board) { + + } + + @Override + public void update(FirefighterBoard board) { + + } +} diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 3251952ea90ec5ea59fc3a3630f3d2a4e4e96f01..b37bb43f82709ea572d88ff13f2d98de32b8e866 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -8,8 +8,11 @@ import java.util.*; public class FirefighterBoard implements Board<List<ModelElement>> { private final int columnCount; private final int rowCount; + private final int initialFireCount; private final int initialFirefighterCount; + private List<Item> itemList; + private List<Box> boxList; private List<Position> firefighterPositions; private Set<Position> firePositions; private int step = 0; @@ -79,9 +82,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } @Override - public int stepNumber() { - return step; - } + public int stepNumber() { return step; } + + public List<Item> itemList() { return itemList; } + + public List<Box> boxList() { return boxList; } private List<Position> updateFirefighters() { List<Position> result = new ArrayList<>(); diff --git a/src/main/java/model/Item.java b/src/main/java/model/Item.java new file mode 100644 index 0000000000000000000000000000000000000000..1593d5616586e6a5a0f232c722ddbdf3006f70bf --- /dev/null +++ b/src/main/java/model/Item.java @@ -0,0 +1,14 @@ +package model; + +import util.Position; +import java.util.ArrayList; +import java.util.List; + +public interface Item { + + void update(FirefighterBoard board); + + List<Position> neighbors(Position position, FirefighterBoard board); + + Position position(); +} diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java new file mode 100644 index 0000000000000000000000000000000000000000..2f288d3e9613124c2bc4ba3ded3c9b757dfbf1f3 --- /dev/null +++ b/src/main/java/model/Mountain.java @@ -0,0 +1,5 @@ +package model; + +public class Mountain implements Box{ +} + diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java new file mode 100644 index 0000000000000000000000000000000000000000..3aec54fdffb58cc9b427c4dec5dd57e12f4c5a08 --- /dev/null +++ b/src/main/java/model/Road.java @@ -0,0 +1,4 @@ +package model; + +public class Road implements Box{ +} diff --git a/src/main/java/model/Rockeries.java b/src/main/java/model/Rockeries.java new file mode 100644 index 0000000000000000000000000000000000000000..18e1a9f2770d19ff3e543d1a8508d662d52f6d41 --- /dev/null +++ b/src/main/java/model/Rockeries.java @@ -0,0 +1,4 @@ +package model; + +public class Rockeries implements Box{ +}