From 0e4962c467e809530eec93dbafde8d5b44bca394 Mon Sep 17 00:00:00 2001 From: Hang <thi-hang.NGUYEN@etu.univ-amu.fr> Date: Fri, 11 Nov 2022 16:25:23 +0100 Subject: [PATCH] THN --- .../main/java/controller/GameController.java | 44 +++++++++---------- app/src/main/java/model/ArrayGrid.java | 9 +++- app/src/main/java/model/CellGridIterator.java | 15 +++++-- .../main/java/model/CyclicColorGenerator.java | 5 ++- .../java/model/DistinctColorGenerator.java | 21 ++++++--- app/src/main/java/model/SquareCell.java | 7 ++- app/src/test/java/model/ArrayGridTest.java | 2 +- 7 files changed, 66 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/controller/GameController.java b/app/src/main/java/controller/GameController.java index 98cfd89..5c2c1d7 100644 --- a/app/src/main/java/controller/GameController.java +++ b/app/src/main/java/controller/GameController.java @@ -8,19 +8,22 @@ import javafx.util.Duration; import model.*; import view.MatrixPane; +import java.util.ArrayList; import java.util.List; import java.util.Random; public class GameController { - public static final Color COLOR_ONE = Color.RED; - public static final Color COLOR_TWO = Color.BLUE; - public static final Color COLOR_THREE = Color.YELLOW; + public static final Color COLOR_ONE = Color.TAN; + public static final Color COLOR_TWO = Color.NAVAJOWHITE; + public static final Color COLOR_THREE = Color.GRAY; public static final Color COLOR_FOUR = Color.GREEN; private static final List<Color> availableColors = List.of(COLOR_ONE, COLOR_TWO, COLOR_THREE, COLOR_FOUR); public static final double PAUSE_MILLISECONDS = 400; private final PauseTransition pause = new PauseTransition(Duration.millis(PAUSE_MILLISECONDS)); + + private final Random random = new Random(); @FXML @@ -36,8 +39,7 @@ public class GameController { public void initialize(){ - this.game = new FloodGame( - matrixPane.getGrid().getNumberOfColumns() * matrixPane.getGrid().getNumberOfRows()); + this.game = new FloodGame(matrixPane.getGrid().getNumberOfColumns() * matrixPane.getGrid().getNumberOfRows()); setPlayerHuman(); matrixPane.setGameController(this); setScoreLabelTextProperty(); @@ -56,39 +58,37 @@ public class GameController { private void colorGrid(ColorGenerator colorGenerator){ // TODO - // matrixPane.getGrid().color(colorGenerator); + matrixPane.getGrid().color(colorGenerator); + } @FXML public void fillGridUniform() { - // TODO uncomment: - // colorGrid(new UniformColorGenerator(COLOR_ONE)); + colorGrid(new UniformColorGenerator(COLOR_ONE)); + } @FXML public void fillGridRandom() { - // TODO uncomment - // colorGrid(new RandomColorGenerator(availableColors,random)); + colorGrid(new RandomColorGenerator(availableColors,random)); } @FXML public void fillGridDistinct() { - // TODO uncomment - // fillGridUniform(); - // colorGrid(new DistinctColorGenerator(COLOR_ONE,List.of(COLOR_THREE, COLOR_FOUR))); + fillGridUniform(); + colorGrid( new DistinctColorGenerator(List.of(COLOR_THREE, COLOR_FOUR), COLOR_ONE));//List.of(COLOR_THREE, COLOR_FOUR))); } @FXML public void fillGridCycle() { - // TODO uncomment - // colorGrid(new CyclingColorGenerator(availableColors)); + // colorGrid(new CyclingColorGenerator(availableColors)); + colorGrid(new CyclicColorGenerator(availableColors)); } @FXML public void fillGridUniformExceptOne() { - // TODO uncomment - // colorGrid(new UniformExceptOneColorGenerator(COLOR_ONE,COLOR_TWO)); + colorGrid(new UniformExceptOneGenerator(COLOR_ONE,COLOR_TWO)); } private void playComputerTurn(){ @@ -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,14 +145,14 @@ public class GameController { @FXML public void setPlayerHuman(){ // TODO - // game.setPlayer(new HumanPlayer("human", getGridStartCell())); + // game.setPlayer(new HumanPlayer("human", getGridStartCell())); } @FXML public void setPlayerRandom() { // TODO - // Player player = ... instantiate a ComputerPlayer named "random" that follows the random strategy - // game.setPlayer(player); + //Player player = ... instantiate a ComputerPlayer named "random" that follows the random strategy + //game.setPlayer(player); } @FXML public void setPlayerRobin() { diff --git a/app/src/main/java/model/ArrayGrid.java b/app/src/main/java/model/ArrayGrid.java index 2252182..d8c22d7 100644 --- a/app/src/main/java/model/ArrayGrid.java +++ b/app/src/main/java/model/ArrayGrid.java @@ -8,9 +8,16 @@ public class ArrayGrid implements Grid{ private int numberOfRows; private int numberOfColumns; public ArrayGrid(int numberOfRows, int numberOfColumns){ - this.cells=new SquareCell[numberOfRows][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(); + } + } + } @Override public Cell getCell(int row, int column) { diff --git a/app/src/main/java/model/CellGridIterator.java b/app/src/main/java/model/CellGridIterator.java index 9d04683..ffebf05 100644 --- a/app/src/main/java/model/CellGridIterator.java +++ b/app/src/main/java/model/CellGridIterator.java @@ -1,6 +1,8 @@ package model; -public class CellGridIterator { +import java.util.Iterator; + +public class CellGridIterator implements Iterator<Cell> { ArrayGrid grid; int indixRow; int indixColum; @@ -12,9 +14,12 @@ public class CellGridIterator { } public Cell next() { final Cell result = grid.getCell(indixRow, indixColum); - indixColum = (indixColum +1) % grid.getNumberOfColumns(); - if(indixColum == 0){ - indixRow++; + + this.indixColum = this.indixColum +1; + + if (this.indixColum == this.grid.getNumberOfColumns()) { + this.indixRow = this.indixRow + 1; + this.indixColum = 0; } return result; @@ -23,4 +28,6 @@ public class CellGridIterator { public boolean hasNext(){ return this.indixColum < this.grid.getNumberOfColumns() && indixRow < this.grid.getNumberOfRows(); } + + } diff --git a/app/src/main/java/model/CyclicColorGenerator.java b/app/src/main/java/model/CyclicColorGenerator.java index 0aec9a4..7e6df5c 100644 --- a/app/src/main/java/model/CyclicColorGenerator.java +++ b/app/src/main/java/model/CyclicColorGenerator.java @@ -17,9 +17,10 @@ public class CyclicColorGenerator implements ColorGenerator { @Override public Color nextColor(Cell cell) { + int color_index = count % this.colors.size(); count++; - return this.colors.get(count-1); + return this.colors.get(color_index);} + - } } diff --git a/app/src/main/java/model/DistinctColorGenerator.java b/app/src/main/java/model/DistinctColorGenerator.java index b777fb3..2285c4c 100644 --- a/app/src/main/java/model/DistinctColorGenerator.java +++ b/app/src/main/java/model/DistinctColorGenerator.java @@ -1,12 +1,12 @@ package model; - -import java.awt.*; +import java.util.ArrayList; +import javafx.scene.paint.Color; import java.util.List; -public class DistinctColorGenerator { - List<Color> colors; - Color defaultColor; +public class DistinctColorGenerator implements ColorGenerator { + private List<Color> colors; + private Color defaultColor; public DistinctColorGenerator(List<Color> colors, Color defaultColor){ this.colors=colors; this.defaultColor=defaultColor; @@ -14,11 +14,20 @@ public class DistinctColorGenerator { } public Color nextColor(Cell cell ){ + List<Cell> neighbors = cell.getNeighbours(); + + List<Color> neighbor_colors = new ArrayList<Color>(); + + for(Cell c : neighbors){ + neighbor_colors.add(c.getColor()); + } + for(int i=0; i < colors.size(); i++){ - if (colors.get(i)==cell){ + if (!neighbor_colors.contains(colors.get(i))){ return colors.get(i); } } + return defaultColor; } } diff --git a/app/src/main/java/model/SquareCell.java b/app/src/main/java/model/SquareCell.java index 00c7d6b..a5b6866 100644 --- a/app/src/main/java/model/SquareCell.java +++ b/app/src/main/java/model/SquareCell.java @@ -2,6 +2,7 @@ package model; import javafx.scene.paint.Color; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -11,15 +12,19 @@ public class SquareCell extends AbstractCell{ public SquareCell (){ - Cell DEFAULT_CELL_COLOR; + this.setColor( DEFAULT_CELL_COLOR); + this.neighbours=new ArrayList<Cell>(); } public SquareCell(Color color){ this.setColor(color); + this.neighbours=new ArrayList<Cell>(); + } public SquareCell(Color color,List<Cell> neighbours ){ this.setColor(color); this.neighbours= neighbours; + } diff --git a/app/src/test/java/model/ArrayGridTest.java b/app/src/test/java/model/ArrayGridTest.java index 91d1b9f..9e2c352 100644 --- a/app/src/test/java/model/ArrayGridTest.java +++ b/app/src/test/java/model/ArrayGridTest.java @@ -66,7 +66,7 @@ class ArrayGridTest { @Test void testColor() { setArrayGridThreeFourRed(); - arrayGridThreeFour.color(cell -> Color.BLACK); + arrayGridThreeFour.color(cell -> Color.GREEN); for (int rowIndex = 0; rowIndex < 3; rowIndex++) { for (int columnIndex = 0; columnIndex < 4; columnIndex++) { assertThat(arrayGridThreeFour.getCell(rowIndex,columnIndex).getColor()).isEqualTo(Color.BLACK); -- GitLab