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