From 97481c2d739b1c8dbdbceb68e22f3e53dda2a805 Mon Sep 17 00:00:00 2001 From: Mathias <mathias.faure@univ-amu.fr> Date: Fri, 16 Oct 2020 09:59:44 +0200 Subject: [PATCH] Ajout de commentaires. --- Cell.java | 1 + GameOfLifeGUI.java | 3 +++ Grid.java | 18 ++++++++++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Cell.java b/Cell.java index d91aeae..b1c83cd 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 ffb5d54..65b1ab0 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 6806860..f50c36a 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()) { -- GitLab