diff --git a/Cell.java b/Cell.java index d91aeaec40b714197e440d4eb3864ab2f8d5b233..b1c83cd3deba165fbc45422ca195581a3d378bf2 100644 --- a/Cell.java +++ b/Cell.java @@ -5,6 +5,7 @@ public class Cell { private boolean isAlive; + //String qui garde la couleur de la cellule private String color = "Red"; public Cell(){ diff --git a/GameOfLifeGUI.java b/GameOfLifeGUI.java index ffb5d5475c90a8a69a9fc9ac281feb5820e30cfd..65b1ab0006b4b78e9c91228c648ae96107287ce2 100644 --- a/GameOfLifeGUI.java +++ b/GameOfLifeGUI.java @@ -39,13 +39,16 @@ public class GameOfLifeGUI extends JFrame { for (int x = 0; x < numberOfColumns; x++) for (int y = 0; y < numberOfRows; y++){ JLabel label = labelGrid[x][y]; + //On regarde ici si la cellule est vivante if(g.getCell(x,y).isAlive()) { + //On fonction de l'instance qui gère la couleur on change sa couleur sur la grille if ((g.getCell(x,y).getColor()).equals("Red")) { label.setForeground(Color.red); } else { label.setForeground(Color.blue); } } + //sinon on l'a met blanc else label.setForeground(Color.white); } diff --git a/Grid.java b/Grid.java index 680686040da251d59548bd73a30e994ce4228abd..f50c36afd5dac5c530ac8c75ae7a87f3a884e725 100644 --- a/Grid.java +++ b/Grid.java @@ -95,7 +95,9 @@ public class Grid implements Iterable<Cell> { } private boolean[][] calculateNextStates() { + //On crée une nouvelle matrice qui correspond à la prochaine grille boolean[][] newState = new boolean[getNumberOfRows()][getNumberOfColumns()]; + //On parcours toute la grille puis on fait appelle à la fonction calculateNextStates for (int r=0; r<numberOfRows; r++) { for (int c=0; c<numberOfColumns; c++) { newState[r][c] = this.calculateNextState(r,c,this.getCell(r,c)); @@ -106,6 +108,7 @@ public class Grid implements Iterable<Cell> { } private void goToNextState(boolean[][] nextState) { + //On utilise la nouvelle matrice pour savoir si la cellule est vivante ou non for (int r=0; r<numberOfRows; r++) { for (int c=0; c<numberOfColumns; c++) { if (nextState[r][c]) { @@ -119,7 +122,9 @@ public class Grid implements Iterable<Cell> { } private boolean calculateNextState(int rowIndex, int columnIndex, Cell cell) { + //On fait appelle à la méthode de Cell pour savoir si la cellule est vivante boolean Nextstate = cell.isAliveInNextState(this.countAliveNeighbours(rowIndex, columnIndex)); + //C'est ici aussi que l'on change la couleur de la cellule en fonction de ses voisins en appelant la méthode setColor if (Nextstate) { if (this.countAliveNeighbours(rowIndex, columnIndex) != 2) { cell.setColor(this.countColorNeighbours(rowIndex, columnIndex)); @@ -130,6 +135,7 @@ public class Grid implements Iterable<Cell> { } private int countAliveNeighbours(int rowIndex, int columnIndex) { + //Ici on compte le nombre de cellules voisines vivantes int CounterAliveCell = 0; for (Cell NeighboursCell : this.getNeighbours(rowIndex, columnIndex)) { if (NeighboursCell.isAlive()) { @@ -140,9 +146,11 @@ public class Grid implements Iterable<Cell> { } private String countColorNeighbours(int rowIndex, int columnIndex) { + //On compte ici la couleur des voisins String CounterColorCell; int Red = 0; int Blue = 0; + //On compte ici la couleur des voisins for (Cell NeighboursCell : this.getNeighbours(rowIndex, columnIndex)) { if (NeighboursCell.isAlive()) { if ((NeighboursCell.getColor()).equals("Red")) { @@ -153,7 +161,7 @@ public class Grid implements Iterable<Cell> { } } } - + //Et on fonction du nombre de couleur on change la couleur dans l'instance qui la gère if (Red>Blue) { CounterColorCell="Red"; } @@ -167,7 +175,9 @@ public class Grid implements Iterable<Cell> { private List<Cell> getNeighbours(int rowIndex, int columnIndex) { + //On crée une liste de voisin List<Cell> Neighbours = new ArrayList<>(); + //On parcours les 8 voisins, en prenant compte à ne pas prendre la cellule de base, et on les ajoutes à la liste for (int r=-1; r<=1; r++) { for (int c=-1; c<=1; c++) { if ((r != 0) || (c != 0)) { @@ -185,7 +195,7 @@ public class Grid implements Iterable<Cell> { * Sets all {@link Cell}s in this {@code Grid} as dead. */ void clear() { - + //On tue toutes les cellules for (Iterator<Cell> it = this.iterator(); it.hasNext(); ) { Cell cell = it.next(); cell.setDead(); @@ -200,10 +210,10 @@ public class Grid implements Iterable<Cell> { */ void randomGeneration(Random random) { - + //On utilise la méthode Iterator for (Iterator<Cell> it = this.iterator(); it.hasNext(); ) { Cell cell = it.next(); - + //Si le hasard a décidé que la cellule est vivante, on utilise ensuite la même méthode pour mettre sa couleur if (random.nextBoolean()) { cell.setAlive(); if (random.nextBoolean()) {