I've been given an assignment dealing with Conway's Game of Life.
I'm having trouble with my CellGrid method and simulateStep method. The probability for being alive doesn't seem to be working and in simulateStep, I'm getting NullPointerException
errors.
Here is my code:
public class CellGrid
{
private Cell[][] cells;
/**
* This populates the grid with cells that will be
* either living or dead (with this probability given by lifeChance)
*
* @param size - grid size
* @param lifeChance - probability of each cell starting out alive
*/
public CellGrid(int size, double lifeChance)
{
cells = new Cell[size][size];
Random r = new Random();
for (int i = 0; i < cells.length; i++)
{
for (int j = 0; j < cells.length; j++)
{
Cell c = new Cell();
double nextVal = r.nextDouble();
if (nextVal < lifeChance)
{
c.setAlive(false);
}
else
{
c.setAlive(true);
}
}
}
}
/**
* Iterates the simulation by one step (according to Game of Life rules)
*/
public void simulateStep()
{
for (int y = 0; y < cells.length; y++)
{
for (int x = 0; x < cells.length; x++)
{
boolean living = cells[y][x].isAlive();
int count = countNeighbours(y, x);
boolean result = false;
if (living && count <= 2)
{
result = false;
}
if (living && (count == 3 || count == 4))
{
result = true;
}
if (living && count == 5)
{
result = false;
}
if (living == true && count > 5)
{
result = true;
}
if (living == false && count > 5)
{
result = true;
}
result = cells[y][x].isAlive();
}
}
}
setAlive method:
public void setAlive(boolean alive)
{
if (isAlive()== true)
{
this.alive = false;
}
if (isAlive() == false)
{
this.alive = true;
}
}
Thank you for all your help!
You should change Cell c = new Cell();
to cells[i][j] = new Cell();
in the constructor.