Skip to content
Snippets Groups Projects
Commit 629d44d2 authored by Luis PARRA's avatar Luis PARRA
Browse files

remove every enum

parent 1926429d
No related branches found
No related tags found
No related merge requests found
Pipeline #25910 failed
Showing
with 114 additions and 115 deletions
......@@ -14,15 +14,15 @@ import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.util.Duration;
import javafx.util.Pair;
import model.Board;
import model.FirefighterBoard;
import model.ModelElement;
import model.ModelElements;
import model.RockScissorPaperBoard;
import util.Position;
import view.Grid;
import view.ViewElement;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -44,11 +44,11 @@ public class Controller {
@FXML
private ToggleButton playToggleButton;
@FXML
private Grid<ViewElement> grid;
private Grid<Color> grid;
@FXML
private VBox parameters;
private Timeline timeline;
private Board<List<ModelElement>> board;
private Board<List<ModelElements>> board;
public static final HashMap<String, Integer> elementsCountFireFighter = new HashMap<String, Integer>() {
{
......@@ -91,10 +91,10 @@ public class Controller {
private void updateBoard() {
List<Position> updatedPositions = board.updateToNextGeneration();
List<Pair<Position, ViewElement>> updatedSquares = new ArrayList<>();
List<Pair<Position, Color>> updatedSquares = new ArrayList<>();
for (Position updatedPosition : updatedPositions) {
List<ModelElement> squareState = board.getState(updatedPosition);
ViewElement viewElement = getViewElement(squareState);
List<ModelElements> squareState = board.getState(updatedPosition);
Color viewElement = getViewElement(squareState);
updatedSquares.add(new Pair<>(updatedPosition, viewElement));
}
grid.repaint(updatedSquares);
......@@ -112,7 +112,7 @@ public class Controller {
int columnCount = board.columnCount();
int rowCount = board.rowCount();
ViewElement[][] viewElements = new ViewElement[rowCount][columnCount];
Color[][] viewElements = new Color[rowCount][columnCount];
for (int column = 0; column < columnCount; column++)
for (int row = 0; row < rowCount; row++)
viewElements[row][column] = getViewElement(board.getState(new Position(row, column)));
......@@ -120,38 +120,10 @@ public class Controller {
updateGenerationLabel(board.stepNumber());
}
private ViewElement getViewElement(List<ModelElement> squareState) {
if (squareState.contains(ModelElement.FIREFIGHTER)) {
return ViewElement.FIREFIGHTER;
}
if (squareState.contains(ModelElement.FIRE)) {
return ViewElement.FIRE;
}
if (squareState.contains(ModelElement.CLOUD)) {
return ViewElement.CLOUD;
}
if (squareState.contains(ModelElement.FIRETRUCK)) {
return ViewElement.FIRETRUCK;
}
if (squareState.contains(ModelElement.MOUNTAIN)) {
return ViewElement.MOUNTAIN;
}
if (squareState.contains(ModelElement.ROAD)) {
return ViewElement.ROAD;
}
if (squareState.contains(ModelElement.ROCKERY)) {
return ViewElement.ROCKERY;
}
if (squareState.contains(ModelElement.ROCK)) {
return ViewElement.ROCK;
}
if (squareState.contains(ModelElement.SCISSOR)) {
return ViewElement.SCISSOR;
}
if (squareState.contains(ModelElement.PAPER)) {
return ViewElement.PAPER;
}
return ViewElement.EMPTY;
private Color getViewElement(List<ModelElements> squareState) {
if(squareState.isEmpty())
return Color.WHITE;
return squareState.get(0).getElementColor();
}
private void initializeTimeline() {
......
package model;
import model.fireFighterElements.*;
import util.Position;
import java.util.ArrayList;
import java.util.List;
public abstract class AbstractBoard<F> implements Board<List<ModelElement>>{
public abstract class AbstractBoard<F> implements Board<List<ModelElements>>{
public int columnCount;
public int rowCount;
......@@ -26,12 +25,12 @@ public abstract class AbstractBoard<F> implements Board<List<ModelElement>>{
@Override
public List<ModelElement> getState(Position position) {
List<ModelElement> result = new ArrayList<>();
public List<ModelElements> getState(Position position) {
List<ModelElements> result = new ArrayList<>();
for(Elements element : elements)
if (element.getElementsPositions().contains(position))
result.add(element.getModelElement());
result.add(element.getModelElements());
return result;
}
......
......@@ -4,24 +4,24 @@ import util.Position;
import java.util.*;
import javafx.scene.paint.Color;
public abstract class AbstractElements implements Elements {
protected Random randomGenerator = new Random();
int rowCount;
int columnCount;
ModelElements modelElements;
protected List<Position> elementsPositions;
protected ModelElement modelElement;
protected AbstractElements(int columnCount, int rowCount){
protected AbstractElements(int columnCount, int rowCount, String elementType, Color elementColor) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.modelElements = new ModelElements(elementType, elementColor);
}
public abstract void nextMove();
public void initializeElements(int count) {
elementsPositions = new ArrayList<>();
for (int i = 0; i < count; i++)
......@@ -34,10 +34,14 @@ public abstract class AbstractElements implements Elements {
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));
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;
}
......@@ -47,13 +51,15 @@ public abstract class AbstractElements implements Elements {
for (Position neighbor : neighbors(position)) {
boolean isNeighbor = true;
for (Elements element : elements) {
if(element == null) continue;
if (element == null)
continue;
if (element.getElementsPositions().contains(neighbor)) {
isNeighbor = false;
break;
}
}
if (isNeighbor) list.add(neighbor);
if (isNeighbor)
list.add(neighbor);
}
return list;
}
......@@ -61,15 +67,16 @@ public abstract class AbstractElements implements Elements {
public List<Position> getElementsPositions() {
return elementsPositions;
}
public void addElement(Position position) {
elementsPositions.add(position);
}
public void removeElement(Position position) {
elementsPositions.remove(position);
}
@Override
public ModelElement getModelElement() {
return modelElement;
public ModelElements getModelElements() {
return modelElements;
}
}
......@@ -14,5 +14,5 @@ public interface Elements {
void addElement(Position position);
ModelElement getModelElement();
ModelElements getModelElements();
}
......@@ -5,7 +5,7 @@ import util.Position;
import java.util.*;
public class FirefighterBoard extends AbstractBoard<ModelElement> {
public class FirefighterBoard extends AbstractBoard<ModelElements> {
private HashMap<String, Integer> elementsCount;
public Fire fire;
......
package model;
public enum ModelElement {
FIREFIGHTER, FIRE, CLOUD, FIRETRUCK, MOUNTAIN, ROAD, ROCKERY, ROCK, SCISSOR, PAPER
}
package model;
import javafx.scene.paint.Color;
public class ModelElements {
public String elementType;
public Color elementColor;
public ModelElements(String elementType, Color elementColor) {
this.elementType = elementType;
this.elementColor = elementColor;
}
public String getElementType() {
return elementType;
}
public Color getElementColor() {
return elementColor;
}
public void setElementType(String elementType) {
this.elementType = elementType;
}
public void setElementColor(Color elementColor) {
this.elementColor = elementColor;
}
}
......@@ -8,7 +8,7 @@ import util.Position;
import java.util.HashMap;
import java.util.*;
public class RockScissorPaperBoard extends AbstractBoard<ModelElement> {
public class RockScissorPaperBoard extends AbstractBoard<ModelElements> {
HashMap<String, Integer> elementsCount;
Rock rock;
Scissor scissor;
......
package model.RockScissorPaperElements;
import model.AbstractElements;
import model.ModelElement;
import util.Position;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.paint.Color;
public class Paper extends AbstractElements {
Scissor scissor;
Rock rock;
public Paper(int columnCount, int rowCount) {
super(columnCount, rowCount);
this.modelElement = ModelElement.PAPER;
super(columnCount, rowCount, "PAPER", Color.BLUE);
}
public void setScissorRock(Scissor scissor, Rock rock) {
......
package model.RockScissorPaperElements;
import model.AbstractElements;
import model.ModelElement;
import util.Position;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.paint.Color;
public class Rock extends AbstractElements {
Paper paper;
Scissor scissor;
public Rock(int columnCount, int rowCount) {
super(columnCount, rowCount);
this.modelElement = ModelElement.ROCK;
super(columnCount, rowCount, "ROCK", Color.BLACK);
}
public void setScissorPaper(Scissor scissor, Paper paper) {
......
package model.RockScissorPaperElements;
import model.AbstractElements;
import model.ModelElement;
import util.Position;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.paint.Color;
public class Scissor extends AbstractElements {
Paper paper;
Rock rock;
public Scissor(int columnCount, int rowCount) {
super(columnCount, rowCount);
this.modelElement = ModelElement.SCISSOR;
super(columnCount, rowCount, "SCISSOR", Color.GRAY);
}
public void setPaperRock(Paper paper, Rock rock) {
......
package model.fireFighterElements;
import model.AbstractElements;
import model.ModelElement;
import util.Position;
import java.util.*;
import javafx.scene.paint.Color;
public abstract class AbstractFireFighters extends AbstractElements {
public Fire fire;
public Mountain mountain;
public AbstractFireFighters(int columnCount, int rowCount, Fire fire, Mountain mountain, ModelElement modelElement){
super(columnCount, rowCount);
public AbstractFireFighters(int columnCount, int rowCount, Fire fire, Mountain mountain, String elementType, Color elementColor){
super(columnCount, rowCount, elementType, elementColor);
this.fire = fire;
this.mountain = mountain;
this.modelElement = modelElement;
}
......
package model.fireFighterElements;
import model.AbstractElements;
import model.ModelElement;
import util.Position;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.paint.Color;
public class Cloud extends AbstractElements {
Fire fire;
public Cloud(int columnCount, int rowCount, Fire fire) {
super(columnCount, rowCount);
super(columnCount, rowCount, "CLOUD", Color.GRAY);
this.fire = fire;
this.modelElement = ModelElement.CLOUD;
}
@Override
public void nextMove() {
......
package model.fireFighterElements;
import model.AbstractElements;
import model.ModelElement;
import util.Position;
import java.util.*;
import javafx.scene.paint.Color;
public class Fire extends AbstractElements {
Mountain mountain;
......@@ -15,11 +16,10 @@ public class Fire extends AbstractElements {
HashMap<Position,Integer> rockeryCountStep = new HashMap<>();
public Fire(int columnCount, int rowCount, Mountain mountain,Road road, Rockery rockery){
super(columnCount, rowCount);
super(columnCount, rowCount, "FIRE", Color.RED);
this.mountain = mountain;
this.road = road;
this.rockery = rockery;
this.modelElement = ModelElement.FIRE;
}
public void nextMove(){
......
......@@ -5,11 +5,11 @@ import util.Position;
import java.util.ArrayList;
import java.util.List;
import model.ModelElement;
import javafx.scene.paint.Color;
public class FireFighterPerson extends AbstractFireFighters{
public FireFighterPerson(int columnCount, int rowCount, Fire fire, Mountain mountain) {
super(columnCount, rowCount, fire, mountain, ModelElement.FIREFIGHTER);
super(columnCount, rowCount, fire, mountain, "FIREFIGHTER", Color.BLUE);
}
@Override
......
......@@ -5,11 +5,11 @@ import util.Position;
import java.util.ArrayList;
import java.util.List;
import model.ModelElement;
import javafx.scene.paint.Color;
public class FireTruck extends AbstractFireFighters{
public FireTruck(int columnCount, int rowCount, Fire fire, Mountain mountain) {
super(columnCount, rowCount, fire, mountain, ModelElement.FIRETRUCK);
super(columnCount, rowCount, fire, mountain, "FIRETRUCK", Color.CYAN);
}
......
package model.fireFighterElements;
import javafx.scene.paint.Color;
import model.AbstractElements;
import model.ModelElement;
public class Mountain extends AbstractElements {
public Mountain(int columnCount, int rowCount){
super(columnCount, rowCount);
this.modelElement = ModelElement.MOUNTAIN;
super(columnCount, rowCount, "MOUNTAIN", Color.BROWN);
}
@Override
......
package model.fireFighterElements;
import javafx.scene.paint.Color;
import model.AbstractElements;
import model.ModelElement;
public class Road extends AbstractElements {
public Road(int columnCount, int rowCount){
super(columnCount, rowCount);
this.modelElement = ModelElement.ROAD;
super(columnCount, rowCount, "ROAD", Color.BLACK);
}
@Override
public void nextMove() {
......
package model.fireFighterElements;
import javafx.scene.paint.Color;
import model.AbstractElements;
import model.ModelElement;
public class Rockery extends AbstractElements {
public Rockery(int columnCount, int rowCount) {
super(columnCount, rowCount);
this.modelElement = ModelElement.ROCKERY;
super(columnCount, rowCount, "ROCKERY", Color.GREEN);
}
@Override
......
......@@ -7,10 +7,10 @@ import util.Position;
import java.util.List;
public class FirefighterGrid extends Canvas implements Grid<ViewElement>{
public class FirefighterGrid extends Canvas implements Grid<Color>{
private void paintElementAtPosition(ViewElement element, Position position) {
paintSquare(position.row(), position.column(), element.color);
private void paintElementAtPosition(Color element, Position position) {
paintSquare(position.row(), position.column(), element);
}
private int squareWidth;
private int squareHeight;
......@@ -18,28 +18,28 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{
private int rowCount;
@Override
public void repaint(List<Pair<Position, ViewElement>> positionedElements) {
public void repaint(List<Pair<Position, Color>> positionedElements) {
clear(positionedElements);
paint(positionedElements);
paintLines();
}
private void clear(List<Pair<Position, ViewElement>> positionedElements) {
for (Pair<Position, ViewElement> positionElement : positionedElements) {
private void clear(List<Pair<Position, Color>> positionedElements) {
for (Pair<Position, Color> positionElement : positionedElements) {
Position position = positionElement.getKey();
clearSquare(position.row(), position.column());
}
}
private void paint(List<Pair<Position, ViewElement>> positionedElements) {
for(Pair<Position, ViewElement> pair : positionedElements){
private void paint(List<Pair<Position, Color>> positionedElements) {
for(Pair<Position, Color> pair : positionedElements){
paintElementAtPosition(pair.getValue(), pair.getKey());
}
}
@Override
public void repaint(ViewElement[][] elements) {
public void repaint(Color[][] elements) {
clear();
paint(elements);
paintLines();
......@@ -49,7 +49,7 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{
getGraphicsContext2D().clearRect(0,0,getWidth(), getHeight());
}
private void paint(ViewElement[][] elements) {
private void paint(Color[][] elements) {
for(int column = 0; column < columnCount; column++)
for(int row = 0; row < rowCount; row++){
paintElementAtPosition(elements[row][column], new Position(row, column));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment