康威的生命游戏(构造和更新游戏)

时间:2015-10-14 12:33:35

标签: java nullpointerexception conways-game-of-life

我获得了一份处理康威生命游戏的作业。

我的CellGrid方法和simulateStep方法有问题。活着的可能性似乎并没有起作用,在simulateStep中,我得到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(); } } } 错误。

这是我的代码:

public void setAlive(boolean alive)
{
    if (isAlive()== true)
    {
        this.alive = false;
    }

    if (isAlive() == false)
    {
        this.alive = true;
    }
}

setAlive方法:

{{1}}

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您应该在构造函数中将Cell c = new Cell();更改为cells[i][j] = new Cell();