From 9e11be31497c7911e36e19cdf3601984d3802189 Mon Sep 17 00:00:00 2001 From: Anthony Viola <anthony.viola34@gmail.com> Date: Sat, 11 Nov 2023 19:00:58 +0100 Subject: [PATCH] Firefighter first update --- src/main/java/model/Box.java | 6 ++++ src/main/java/model/Extinguisher.java | 43 +++++++++++++++++++++++ src/main/java/model/Fire.java | 37 +++++++++++++++++++ src/main/java/model/Firefighter.java | 19 ++++++++++ src/main/java/model/FirefighterBoard.java | 11 ++++-- src/main/java/model/Item.java | 14 ++++++++ src/main/java/model/Mountain.java | 5 +++ src/main/java/model/Road.java | 4 +++ src/main/java/model/Rockeries.java | 4 +++ 9 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 src/main/java/model/Box.java create mode 100644 src/main/java/model/Extinguisher.java create mode 100644 src/main/java/model/Fire.java create mode 100644 src/main/java/model/Firefighter.java create mode 100644 src/main/java/model/Item.java create mode 100644 src/main/java/model/Mountain.java create mode 100644 src/main/java/model/Road.java create mode 100644 src/main/java/model/Rockeries.java diff --git a/src/main/java/model/Box.java b/src/main/java/model/Box.java new file mode 100644 index 0000000..39d4104 --- /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 0000000..4e15928 --- /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 0000000..98512a2 --- /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 0000000..3fa26bf --- /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 3251952..b37bb43 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 0000000..1593d56 --- /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 0000000..2f288d3 --- /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 0000000..3aec54f --- /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 0000000..18e1a9f --- /dev/null +++ b/src/main/java/model/Rockeries.java @@ -0,0 +1,4 @@ +package model; + +public class Rockeries implements Box{ +} -- GitLab