Select Git revision
FirefighterGridTest.java
Forked from
COUETOUX Basile / FirefighterStarter
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Fire.java 1.76 KiB
package model;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javafx.scene.paint.Color;
import util.Position;
public class Fire implements Entity{
Board<Entity> b;
private Position position;
private final Color viewColor = Color.RED;
private int age;
public Fire(Position position, Board<Entity> b){
this.b = b;
this.position = position;
this.age = 0;
}
public Fire(Position position, Board<Entity> b, int age){
this.b = b;
this.position = position;
this.age = age;
}
@Override
public List<Position> nextTurn(Board<Entity> board) {
age = age +1;
List<Position> positions = generateAdjacentPosition();
for(Position p : positions){
board.setState(new Fire(p, board), p);
if(!b.doesPositionExist(p)){
positions.remove(p);
}
}
return positions;
}
private List<Position> generateAdjacentPosition(){
int x = position.x();
int y = position.y();
return Stream.of(
new Position(x, y + 1),
new Position(x + 1, y),
new Position(x, y - 1),
new Position(x - 1, y)
)
.filter(p -> b.doesPositionExist(p))
.collect(Collectors.toList());
}
@Override
public void setPosition(Position p) {
this.position = p;
}
@Override
public Position getPosition() {
return this.position;
}
public Color getViewColor(){
return this.viewColor;
}
@Override
public int getAge() {
return this.age;
}
@Override
public void incrementAge() {
this.age = age + 1 ;
}
}