From 16e2b1b1c43505b3dc0aef3dca74adf392def2e3 Mon Sep 17 00:00:00 2001 From: Hang <thi-hang.NGUYEN@etu.univ-amu.fr> Date: Thu, 10 Nov 2022 11:16:38 +0100 Subject: [PATCH] THN --- app/src/main/java/model/ArrayGrid.java | 4 ++- app/src/main/java/model/CellGridIterator.java | 2 +- .../main/java/model/CyclicColorGenerator.java | 25 ++++++++++++++++++ app/src/main/java/model/GrayGrid.java | 12 +++++++++ app/src/main/java/model/Grid.java | 1 + app/src/main/java/model/Iterator.java | 6 ----- .../main/java/model/RandomColorGenerator.java | 21 +++++++++++++++ app/src/main/java/model/SquareCell.java | 11 -------- .../java/model/UniformColorGenerator.java | 14 ++++++++++ .../java/model/UniformExceptOneGenerator.java | 26 +++++++++++++++++++ app/src/main/java/util/RandomUtil.java | 17 ++++++++++++ app/src/main/java/view/MatrixPane.java | 3 ++- 12 files changed, 122 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/model/CyclicColorGenerator.java delete mode 100644 app/src/main/java/model/Iterator.java create mode 100644 app/src/main/java/model/RandomColorGenerator.java create mode 100644 app/src/main/java/model/UniformColorGenerator.java create mode 100644 app/src/main/java/model/UniformExceptOneGenerator.java create mode 100644 app/src/main/java/util/RandomUtil.java diff --git a/app/src/main/java/model/ArrayGrid.java b/app/src/main/java/model/ArrayGrid.java index 0ce83d7..856b605 100644 --- a/app/src/main/java/model/ArrayGrid.java +++ b/app/src/main/java/model/ArrayGrid.java @@ -1,5 +1,7 @@ package model; +import java.util.Iterator; + public class ArrayGrid implements Grid{ private Cell[][] cells; @@ -33,6 +35,6 @@ public class ArrayGrid implements Grid{ } } public Iterator<Cell> iterator(){ - return new CellGridIterator(this); + return (Iterator<Cell>) new CellGridIterator(this); } } diff --git a/app/src/main/java/model/CellGridIterator.java b/app/src/main/java/model/CellGridIterator.java index 04199f3..9d04683 100644 --- a/app/src/main/java/model/CellGridIterator.java +++ b/app/src/main/java/model/CellGridIterator.java @@ -1,6 +1,6 @@ package model; -public class CellGridIterator implements Iterator<Cell>{ +public class CellGridIterator { ArrayGrid grid; int indixRow; int indixColum; diff --git a/app/src/main/java/model/CyclicColorGenerator.java b/app/src/main/java/model/CyclicColorGenerator.java new file mode 100644 index 0000000..0aec9a4 --- /dev/null +++ b/app/src/main/java/model/CyclicColorGenerator.java @@ -0,0 +1,25 @@ +package model; + + +import java.awt.*; +import javafx.scene.paint.Color; +import java.util.List; + +public class CyclicColorGenerator implements ColorGenerator { + List<Color> colors; + + public CyclicColorGenerator(List<Color> colors){ + this.colors=colors; + + } + int count=0; + + + @Override + public Color nextColor(Cell cell) { + count++; + return this.colors.get(count-1); + + } + +} diff --git a/app/src/main/java/model/GrayGrid.java b/app/src/main/java/model/GrayGrid.java index 02cb8ee..9e7975d 100644 --- a/app/src/main/java/model/GrayGrid.java +++ b/app/src/main/java/model/GrayGrid.java @@ -1,5 +1,7 @@ package model; +import java.util.Iterator; + public class GrayGrid implements Grid{ private final int numberOfRows; @@ -40,4 +42,14 @@ public class GrayGrid implements Grid{ public int getNumberOfColumns() { return numnberOfColumns; } + + @Override + public void color(ColorGenerator colorGenerator) { + + } + + @Override + public Iterator<Cell> iterator() { + return null; + } } diff --git a/app/src/main/java/model/Grid.java b/app/src/main/java/model/Grid.java index 75aacc6..b02c149 100644 --- a/app/src/main/java/model/Grid.java +++ b/app/src/main/java/model/Grid.java @@ -27,5 +27,6 @@ public interface Grid extends Iterable<Cell> { * @param colorGenerator the generator used to determine the color of each cell. * The new color of {@code cell} is obtained by calling the method {@code nextColor} */ + void color(ColorGenerator colorGenerator); } diff --git a/app/src/main/java/model/Iterator.java b/app/src/main/java/model/Iterator.java deleted file mode 100644 index 98e8427..0000000 --- a/app/src/main/java/model/Iterator.java +++ /dev/null @@ -1,6 +0,0 @@ -package model; - -public interface Iterator<Cell> { - - -} diff --git a/app/src/main/java/model/RandomColorGenerator.java b/app/src/main/java/model/RandomColorGenerator.java new file mode 100644 index 0000000..da3b70b --- /dev/null +++ b/app/src/main/java/model/RandomColorGenerator.java @@ -0,0 +1,21 @@ +package model; + +import javafx.scene.paint.Color; +import util.RandomUtil; + +import java.util.List; +import java.util.Random; + +public class RandomColorGenerator implements ColorGenerator{ + List<Color> colors; + Random radomGenerator; + + public RandomColorGenerator(List<Color>colors,Random radomGenerator){ + this.colors=colors; + this.radomGenerator=radomGenerator; + } + @Override + public Color nextColor(Cell cell) { + return RandomUtil.randomElement(this.colors, this.radomGenerator); + } +} diff --git a/app/src/main/java/model/SquareCell.java b/app/src/main/java/model/SquareCell.java index 87139cc..00c7d6b 100644 --- a/app/src/main/java/model/SquareCell.java +++ b/app/src/main/java/model/SquareCell.java @@ -9,17 +9,6 @@ public class SquareCell extends AbstractCell{ private List<Cell> neighbours; - public SquareCell (){ - Cell DEFAULT_CELL_COLOR; - } - public SquareCell(Color color){ - this.setColor(color); - } - public SquareCell(Color color,List<Cell> neighbours ){ - this.setColor(color); - this.neighbours= neighbours; - - } public SquareCell (){ Cell DEFAULT_CELL_COLOR; diff --git a/app/src/main/java/model/UniformColorGenerator.java b/app/src/main/java/model/UniformColorGenerator.java new file mode 100644 index 0000000..12a2efd --- /dev/null +++ b/app/src/main/java/model/UniformColorGenerator.java @@ -0,0 +1,14 @@ +package model; + +import javafx.scene.paint.Color; + +public class UniformColorGenerator implements ColorGenerator{ + Color color; + public UniformColorGenerator(Color color){ + this.color=color; + } + @Override + public Color nextColor(Cell cell) { + return this.color; + } +} diff --git a/app/src/main/java/model/UniformExceptOneGenerator.java b/app/src/main/java/model/UniformExceptOneGenerator.java new file mode 100644 index 0000000..e641dcc --- /dev/null +++ b/app/src/main/java/model/UniformExceptOneGenerator.java @@ -0,0 +1,26 @@ +package model; + +import javafx.scene.paint.Color; + +public class UniformExceptOneGenerator implements ColorGenerator{ + Color uniformColor; + Color exceptionColor; + public UniformExceptOneGenerator(Color uniformColor, Color exceptionColor){ + this.uniformColor=uniformColor; + this.exceptionColor=exceptionColor; + + } + + int count=0; + public Color nextColor(Cell cell) { + + count++; + if(count==2){ + return this.exceptionColor; + } + + return this.uniformColor; + } + + +} diff --git a/app/src/main/java/util/RandomUtil.java b/app/src/main/java/util/RandomUtil.java new file mode 100644 index 0000000..0936da8 --- /dev/null +++ b/app/src/main/java/util/RandomUtil.java @@ -0,0 +1,17 @@ +package util; + +import java.util.List; +import java.util.Random; + + public class RandomUtil { + + private RandomUtil(){}; + + public static <T> T randomElement(T[] elements, Random random){ + return elements[random.nextInt(elements.length)]; + } + public static <T> T randomElement(List<T> elements, Random random){ + + return elements.get(random.nextInt(elements.size())); + } +} diff --git a/app/src/main/java/view/MatrixPane.java b/app/src/main/java/view/MatrixPane.java index f20ed03..2843295 100644 --- a/app/src/main/java/view/MatrixPane.java +++ b/app/src/main/java/view/MatrixPane.java @@ -8,6 +8,7 @@ import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.util.Duration; +import model.ArrayGrid; import model.Cell; import model.GrayGrid; import model.Grid; @@ -29,7 +30,7 @@ public class MatrixPane extends GridPane { this.numberOfColumns = numberOfColumns; this.numberOfRows = numberOfRows; // TODO replace by new ArrayGrid(numberOfRows, numberOfColumns) - cellGrid = new GrayGrid(numberOfRows, numberOfColumns); + cellGrid = new ArrayGrid(numberOfRows, numberOfColumns); initMatrix(); } -- GitLab