Select Git revision
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.
AbstractElements.java 1.39 KiB
package model;
import util.Position;
import java.util.*;
public abstract class AbstractElements implements Elements {
final Random randomGenerator = new Random();
int rowCount = 0;
int columnCount = 0;
ModelElement modelElement;
List<Position> elementsPositions;
public abstract void nextMove();
public abstract void initializeElements(int count, int rowCount, int columnCount);
protected Position randomPosition(int rowCount, int columnCount) {
return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
}
protected List<Position> neighbors(Position position) {
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() < rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
return list;
}
public List<Position> getElementsPositions() {
return elementsPositions;
}
public void addElement(Position position){
elementsPositions.add(position);
}
@Override
public ModelElement getModelElement() {
return modelElement;
}
}