diff --git a/app/src/main/java/controller/GameController.java b/app/src/main/java/controller/GameController.java index 5c2c1d7346ee30d4313655e5f9f448834d86c422..de471560b405621f3b6fd29606e35ff5edb18842 100644 --- a/app/src/main/java/controller/GameController.java +++ b/app/src/main/java/controller/GameController.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Random; public class GameController { - public static final Color COLOR_ONE = Color.TAN; + public static final Color COLOR_ONE = Color.RED; public static final Color COLOR_TWO = Color.NAVAJOWHITE; public static final Color COLOR_THREE = Color.GRAY; public static final Color COLOR_FOUR = Color.GREEN; @@ -77,7 +77,7 @@ public class GameController { @FXML public void fillGridDistinct() { fillGridUniform(); - colorGrid( new DistinctColorGenerator(List.of(COLOR_THREE, COLOR_FOUR), COLOR_ONE));//List.of(COLOR_THREE, COLOR_FOUR))); + colorGrid( new DistinctColorGenerator( List.of(COLOR_THREE, COLOR_FOUR),COLOR_ONE));//List.of(COLOR_THREE, COLOR_FOUR))); } @FXML @@ -94,22 +94,22 @@ public class GameController { private void playComputerTurn(){ // TODO // uncomment - // if (!game.hasEnded() && !game.isHumanTurn()){ - // ComputerPlayer player = ((ComputerPlayer) game.getPlayer()); - // Flooder.flood(player.getStartCell(), player.play()); - // setScoreLabelTextProperty(); - // pause.play(); - // } + if (!game.hasEnded() && !game.isHumanTurn()){ + ComputerPlayer player = ((ComputerPlayer) game.getPlayer()); + Flooder.flood(player.getStartCell(), ((ComputerPlayer) game.getPlayer()).play()); + setScoreLabelTextProperty(); + pause.play(); + } } public void playHumanTurn(Color color){ // TODO // uncomment - // if(!game.hasEnded() && game.isHumanTurn()){ - // Flooder.flood(game.getPlayer().getStartCell(), color); - // setScoreLabelTextProperty(); - // game.incrementTurn(); - //} + if(!game.hasEnded() && game.isHumanTurn()){ + Flooder.flood(game.getPlayer().getStartCell(), color); + setScoreLabelTextProperty(); + game.incrementTurn(); + } } private void setPauseAnimation(){ @@ -123,8 +123,8 @@ public class GameController { private void setScoreLabelTextProperty() { // TODO // uncomment - // Player player = game.getPlayer(); - // scoreLabel.textProperty().setValue(Integer.toString(game.getPlayerScore(player))); + Player player = game.getPlayer(); + scoreLabel.textProperty().setValue(Integer.toString(game.getPlayerScore(player))); } @@ -145,7 +145,7 @@ public class GameController { @FXML public void setPlayerHuman(){ // TODO - // game.setPlayer(new HumanPlayer("human", getGridStartCell())); + game.setPlayer(new HumanPlayer("human", getGridStartCell())); } @FXML diff --git a/app/src/main/java/model/ArrayGrid.java b/app/src/main/java/model/ArrayGrid.java index d8c22d7fbb6c18d40bb0c607d3c50249c432f968..c75fa18e09ee3cb2cb3769d6f30ff497709f623e 100644 --- a/app/src/main/java/model/ArrayGrid.java +++ b/app/src/main/java/model/ArrayGrid.java @@ -8,17 +8,19 @@ public class ArrayGrid implements Grid{ private int numberOfRows; private int numberOfColumns; public ArrayGrid(int numberOfRows, int numberOfColumns){ - if (numberOfRows <= 0 || numberOfColumns <= 0) - throw new IllegalArgumentException(); - - this.cells=new SquareCell[numberOfRows][numberOfColumns]; - for (int i=0; i< numberOfRows;i++){ - for (int j=0; j < numberOfColumns; j++){ - cells[i][j] = new SquareCell(); + if (numberOfRows <= 0 || numberOfColumns <= 0){ + throw new IllegalArgumentException();} + else{ + this.numberOfColumns=numberOfColumns; + this.numberOfRows=numberOfRows; + this.cells=new SquareCell[numberOfRows][numberOfColumns]; + for (int i=0; i< numberOfRows;i++){ + for (int j=0; j < numberOfColumns; j++){ + cells[i][j] = new SquareCell(); } } - } + }} @Override public Cell getCell(int row, int column) { return this.cells[row][column]; diff --git a/app/src/main/java/model/Cell.java b/app/src/main/java/model/Cell.java index 4f09b41bc92f4c117ab722f4e7a642c4c691aa54..e34e6d6034b293829d6d1318d6c044c460f4c077 100644 --- a/app/src/main/java/model/Cell.java +++ b/app/src/main/java/model/Cell.java @@ -41,6 +41,7 @@ public interface Cell { * @return this {@link Cell}'s property */ Property<Color> getColorProperty(); + Iterator<Cell> iterator(); } diff --git a/app/src/main/java/model/ColoredCellIerator.java b/app/src/main/java/model/ColoredCellIerator.java new file mode 100644 index 0000000000000000000000000000000000000000..0800efb3bd402c0a77c446ea111b87d7af74f2e8 --- /dev/null +++ b/app/src/main/java/model/ColoredCellIerator.java @@ -0,0 +1,42 @@ +package model; + + + +import javafx.scene.paint.Color; +import util.SetUtil; + +import java.util.*; + +public class ColoredCellIerator{ /*implements Iterator<Cell> { + + Color color; + List<Cell> cells; + Set<Cell> visitedCells; + Set<Cell> pendingCells=new HashSet<Cell>(); + + + public ColoredCellIerator(Cell startCell){ + this.color=startCell.getColor(); + this.visitedCells= new HashSet<Cell>(); + this.pendingCells.add(startCell); + + } + @Override + public boolean hasNext() { + if (this.pendingCells.size()==0) return false; + return true; + } + + @Override + public Cell next() { + for( int i=0; i< this.pendingCells.size();i++){ + if (SetUtil.anyElement(this.pendingCells)!= SetUtil.anyElement(this.visitedCells)&&(SetUtil.anyElement(this.pendingCells).getColor()==this.color){ + //this.visitedCells.add(SetUtil.anyElement()) + } + } + + + + return null; + }*/ +} diff --git a/app/src/main/java/model/ComputerPlayer.java b/app/src/main/java/model/ComputerPlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..7796e9c1bf37746562a0e38c4b13deeb92bf8e5b --- /dev/null +++ b/app/src/main/java/model/ComputerPlayer.java @@ -0,0 +1,29 @@ +package model; + +import com.sun.prism.paint.Color; + +public class ComputerPlayer implements Player{ + @Override + public boolean isHuman() { + return false; + } + + @Override + public int coloredArea(Cell startCell) { + return 0; + } + + @Override + public String getName() { + return null; + } + + @Override + public Cell getStartCell() { + return null; + } + public javafx.scene.paint.Color play(){ + return Color.RED; + } + +} diff --git a/app/src/main/java/model/DistinctColorGenerator.java b/app/src/main/java/model/DistinctColorGenerator.java index 2285c4ccbb61c50930bccc8477572b7974964a0b..f2eb4e2eed7f691b57620fa1421d38378baf7e8e 100644 --- a/app/src/main/java/model/DistinctColorGenerator.java +++ b/app/src/main/java/model/DistinctColorGenerator.java @@ -13,21 +13,27 @@ public class DistinctColorGenerator implements ColorGenerator { } - public Color nextColor(Cell cell ){ - List<Cell> neighbors = cell.getNeighbours(); + public Color nextColor(Cell cell ) { + + List<Cell> neighbors = new ArrayList<>(); + + System.out.println(neighbors.size()); List<Color> neighbor_colors = new ArrayList<Color>(); - for(Cell c : neighbors){ + + for (Cell c : neighbors) { neighbor_colors.add(c.getColor()); } - - for(int i=0; i < colors.size(); i++){ - if (!neighbor_colors.contains(colors.get(i))){ - return colors.get(i); + for (int i = 0; i < colors.size(); i++) { + for (int j = 0; j < neighbor_colors.size(); j++) { + //if (colors.get(i)==neighbor_colors.get(j)) //break;//if (!(neighbor_colors.contains(colors.get(i)))){ } - } + return this.colors.get(i); + } return defaultColor; + } + } diff --git a/app/src/main/java/model/FloodGame.java b/app/src/main/java/model/FloodGame.java index 64d44a1846ae2c7bb0c04b029682013396941bc0..c451a6e277167f200bc0a4150293a216bb31ba6f 100644 --- a/app/src/main/java/model/FloodGame.java +++ b/app/src/main/java/model/FloodGame.java @@ -49,18 +49,18 @@ public class FloodGame { public int getPlayerScore(Player player) { - // TODO - return 0; + //todo + return this.getPlayerScore(player); } public boolean hasWon(Player player){ + return this.getPlayerScore(player)==this.totalFloodingArea; // TODO - return false; } public boolean hasEnded(){ // TODO - return false; + return this.getTurn()>=25; } } diff --git a/app/src/main/java/model/Flooder.java b/app/src/main/java/model/Flooder.java new file mode 100644 index 0000000000000000000000000000000000000000..52f78e7240c3aa0e352a83878efe937823ec8272 --- /dev/null +++ b/app/src/main/java/model/Flooder.java @@ -0,0 +1,14 @@ +package model; + +import javafx.scene.paint.Color; + +public class Flooder { + + public static void flood(Cell startCell, Color floodingColor){ + + } + public static int coloredArea(Cell startCell){ + return 0; + + } +} diff --git a/app/src/main/java/model/GrayCell.java b/app/src/main/java/model/GrayCell.java index 8007887ea0a9ca53b4ec9b5bf8d7a894c9711ac3..b417d3f743eeb10dcb8eceb312333195f260f52a 100644 --- a/app/src/main/java/model/GrayCell.java +++ b/app/src/main/java/model/GrayCell.java @@ -3,10 +3,19 @@ package model; import javafx.beans.property.Property; import javafx.scene.paint.Color; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; public class GrayCell extends AbstractCell{ + Cell[][] cells; + int dim; + public GrayCell(Cell[][] cells, int dim){ + + + } + public GrayCell(){} public static final Cell GRAY_CELL = new GrayCell(); /** @@ -16,6 +25,8 @@ public class GrayCell extends AbstractCell{ */ @Override public List<Cell> getNeighbours() { + List<Cell> neighbours= new ArrayList<Cell>(); + return null; } @@ -30,6 +41,11 @@ public class GrayCell extends AbstractCell{ } + @Override + public Iterator<Cell> iterator() { + return null; + } + @Override public void setColor(Color color){ diff --git a/app/src/main/java/model/Grid.java b/app/src/main/java/model/Grid.java index b02c149464004c8e4cd7a62bb0da7924aca58be5..4487a8a2dc7c51132a146d98eca9617166f1e6e3 100644 --- a/app/src/main/java/model/Grid.java +++ b/app/src/main/java/model/Grid.java @@ -1,5 +1,7 @@ package model; +import java.util.Iterator; + public interface Grid extends Iterable<Cell> { /** @@ -29,4 +31,6 @@ public interface Grid extends Iterable<Cell> { */ void color(ColorGenerator colorGenerator); + + } diff --git a/app/src/main/java/model/HumanPlayer.java b/app/src/main/java/model/HumanPlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..e83c215d307ac7e557b53ed475b9b850c12d98a8 --- /dev/null +++ b/app/src/main/java/model/HumanPlayer.java @@ -0,0 +1,34 @@ +package model; + +public class HumanPlayer implements Player{ + + String name; + Cell startCell; + public HumanPlayer(String name, Cell startCell){ + this.name=name; + this.startCell=startCell; + } + HumanPlayer(Cell startCell){ + this.name="player"; + this.startCell=startCell; + } + @Override + public boolean isHuman() { + return false; + } + + @Override + public int coloredArea(Cell startCell) { + return 0; + } + + @Override + public String getName() { + return null; + } + + @Override + public Cell getStartCell() { + return null; + } +} diff --git a/app/src/main/java/model/Player.java b/app/src/main/java/model/Player.java index ded52afe6c06545ba9784bd1fd110e49afd3266d..4ab3d75075d6d87b32ace989e0c857dab10c787f 100644 --- a/app/src/main/java/model/Player.java +++ b/app/src/main/java/model/Player.java @@ -2,4 +2,8 @@ package model; public interface Player { boolean isHuman(); + int coloredArea(Cell startCell); + String getName(); + Cell getStartCell(); + } diff --git a/app/src/main/java/model/SquareCell.java b/app/src/main/java/model/SquareCell.java index a5b6866b259250df6a37089c172003fb9e6ac7cb..0ff9a94d25c73df68a997b7f1ffef5d053ed3852 100644 --- a/app/src/main/java/model/SquareCell.java +++ b/app/src/main/java/model/SquareCell.java @@ -52,5 +52,11 @@ public class SquareCell extends AbstractCell{ } + @Override + public Iterator<Cell> iterator() { + // return new ColoredCellIterator(); + return null; + } + } diff --git a/app/src/main/java/view/MatrixPane.java b/app/src/main/java/view/MatrixPane.java index 2843295c2523e1bcf389a15d1d1459d87a864fa8..b9b744ddaa26eb0bdbd5d7d5e0e8ffffbe65771e 100644 --- a/app/src/main/java/view/MatrixPane.java +++ b/app/src/main/java/view/MatrixPane.java @@ -32,6 +32,7 @@ public class MatrixPane extends GridPane { // TODO replace by new ArrayGrid(numberOfRows, numberOfColumns) cellGrid = new ArrayGrid(numberOfRows, numberOfColumns); initMatrix(); + }