Skip to content
Snippets Groups Projects
Commit 8e12530a authored by CHERIFI Khadidja's avatar CHERIFI Khadidja
Browse files

Replace Grid.java

parent 4576739b
No related branches found
No related tags found
No related merge requests found
import java.util.Arrays; import java.util.*;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
/** /**
* {@code Grid} instances represent the grid in <i>The Game of Life</i>. * {@code Grid} instances represent the grid in <i>The Game of Life</i>.
*/ */
public class Grid implements Iterable<Cell> { class Grid implements Iterable<Cell> {
private final int numberOfRows; private final int numberOfRows;
private final int numberOfColumns; private final int numberOfColumns;
...@@ -77,6 +74,7 @@ public class Grid implements Iterable<Cell> { ...@@ -77,6 +74,7 @@ public class Grid implements Iterable<Cell> {
* @return the number of columns in this {@code Grid} * @return the number of columns in this {@code Grid}
*/ */
public int getNumberOfColumns() { public int getNumberOfColumns() {
return numberOfColumns; return numberOfColumns;
} }
...@@ -98,29 +96,78 @@ public class Grid implements Iterable<Cell> { ...@@ -98,29 +96,78 @@ public class Grid implements Iterable<Cell> {
} }
private boolean[][] calculateNextStates() { private boolean[][] calculateNextStates() {
return null; boolean [][] new_stat = new boolean[getNumberOfRows()][getNumberOfColumns()];
for(int row=0; row<getNumberOfRows(); row++){
for (int col = 0; col < getNumberOfColumns(); col++)
new_stat [row][col] = calculateNextState(row, col);
}
return new_stat;
} }
private boolean calculateNextState(int rowIndex, int columnIndex, Cell cell) {
return false;
private boolean calculateNextState(int rows, int columns) {
Cell cellule = getCell(rows, columns);
int nbOfVoisinesVivantes = countAliveNeighbours(rows, columns);
return cellule.isAliveInNextState(nbOfVoisinesVivantes);
} }
private int countAliveNeighbours(int rowIndex, int columnIndex) { private int countAliveNeighbours(int rowIndex, int columnIndex) {
return 0; List<Cell> voisine =getNeighbours( rowIndex, columnIndex);
Iterator<Cell> iterator = voisine.iterator();
int voisine_vivant = 0;
while(iterator.hasNext()) {
if(iterator.next().isAlive())
voisine_vivant = voisine_vivant+1;
}
return voisine_vivant;
} }
private List<Cell> getNeighbours(int rowIndex, int columnIndex) { private List<Cell> getNeighbours(int rowIndex, int columnIndex) {
return null; List<Cell> voisine = new LinkedList<Cell>();
voisine.add(getCell(rowIndex, columnIndex-1));
voisine.add(getCell(rowIndex, columnIndex+1));
voisine.add(getCell(rowIndex+1, columnIndex));
voisine.add(getCell(rowIndex-1, columnIndex));
voisine.add(getCell(rowIndex+1, columnIndex+1));
voisine.add(getCell(rowIndex+1, columnIndex-1));
voisine.add(getCell(rowIndex-1, columnIndex-1));
voisine.add(getCell(rowIndex-1, columnIndex+1));
return voisine;
} }
private void goToNextState(boolean[][] nextState) { private void goToNextState(boolean[][] nextState) {
for(int row = 0 ; row<this.getNumberOfRows();row++){
for(int col = 0 ; col<this.getNumberOfColumns(); col++){
Cell stat = getCell(row,col);
if (nextState[row][col]){
stat.setAlive();
}
else{
stat.setDead();
}
}
}
} }
/** /**
* Sets all {@link Cell}s in this {@code Grid} as dead. * Sets all {@link Cell}s in this {@code Grid} as dead.
*/ */
void clear() { void clear() {
for(Iterator<Cell> gril = iterator(); gril.hasNext();){
Cell cel = gril.next();
cel.setDead();
}
} }
/** /**
...@@ -131,6 +178,16 @@ public class Grid implements Iterable<Cell> { ...@@ -131,6 +178,16 @@ public class Grid implements Iterable<Cell> {
*/ */
void randomGeneration(Random random) { void randomGeneration(Random random) {
Iterator<Cell> gril = iterator();
while (gril.hasNext()){
Cell cel = gril.next();
boolean aleatoire = random.nextBoolean();
if(aleatoire)
cel.setAlive();
else
cel.setDead();
}
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment