Skip to content
Snippets Groups Projects
Commit 9e11be31 authored by Anthony Viola's avatar Anthony Viola
Browse files

Firefighter first update

parent 3c486887
No related branches found
No related tags found
No related merge requests found
Pipeline #23679 passed
package model;
public interface Box {
}
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);
}
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;
}
}
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) {
}
}
...@@ -8,8 +8,11 @@ import java.util.*; ...@@ -8,8 +8,11 @@ import java.util.*;
public class FirefighterBoard implements Board<List<ModelElement>> { public class FirefighterBoard implements Board<List<ModelElement>> {
private final int columnCount; private final int columnCount;
private final int rowCount; private final int rowCount;
private final int initialFireCount; private final int initialFireCount;
private final int initialFirefighterCount; private final int initialFirefighterCount;
private List<Item> itemList;
private List<Box> boxList;
private List<Position> firefighterPositions; private List<Position> firefighterPositions;
private Set<Position> firePositions; private Set<Position> firePositions;
private int step = 0; private int step = 0;
...@@ -79,9 +82,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -79,9 +82,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
} }
@Override @Override
public int stepNumber() { public int stepNumber() { return step; }
return step;
} public List<Item> itemList() { return itemList; }
public List<Box> boxList() { return boxList; }
private List<Position> updateFirefighters() { private List<Position> updateFirefighters() {
List<Position> result = new ArrayList<>(); List<Position> result = new ArrayList<>();
......
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();
}
package model;
public class Mountain implements Box{
}
package model;
public class Road implements Box{
}
package model;
public class Rockeries implements Box{
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment