1

我正在实施康威的人生游戏。我已经阅读了初始板,现在我需要对其进行编程以计算单元的活邻居。

一些基本规则

任何少于两个活邻居的活细胞都会死亡,好像是由于人口不足造成的。任何有两三个活邻居的活细胞都可以活到下一代。任何有超过三个活邻居的活细胞都会死亡,就好像过度拥挤一样。任何只有三个活邻居的死细胞都会变成活细胞,就像通过繁殖一样。

这是我已经拥有的代码。

更新:这是在一些初步建议后更改的代码。

/**
 * Write your comments here following the javadoc conventions
 */
public static int countNeighbours(boolean[][] board, int row, int col)
{
    int neighbours = 0; 
    int x = -1;
    while (x <= 1) {
        int y = -1;
        while (y <= 1) {
            if (board[row][col] == true) {

                neighbours++; 
            }
            // Given a 2D boolan array and a cell location given by its
            // row and column indecies, count the number of live cells
            // immediately surrounding the given cell. Remember that you
            // mustn't count the cell itself.

        }


    }
    return neighbours;
}

这是在正确的轨道上吗?

4

3 回答 3

2

因为我知道这是一个典型的学校作业,我想给你完整的答案,但你不应该在方法的开头重新定义 row ,称之为别的东西,循环应该从row-1torow+1col-1to col+1

于 2012-09-19T09:49:28.560 回答
2

我想你想做

if (board[row][col] == true) {

哪个是相同的

if (board[row][col]) {
于 2012-09-19T09:45:58.123 回答
0

如果您可以使您的电路板全球化,这可能适用于带有环绕的单个单元格:

public Cell[] getNeighbours(int i, int j) {
int i2 = i - 1, i3 = i + 1, j2 = j - 1, j3 = j + 1;
if (i2 == -1) i2 = board.length - 1;
if (i3 == (board.length)) i3 = 0;
if (j2 == -1) j2 = board[i].length - 1;
if (j3 == (board[i].length)) j3 = 0;
return new Cell[]{board[i2][j2], board[i2][j], board[i2][j3], board[i][j2], board[i][j3], board[i3][j2], board[i3][j], board[i3][j3]};

}

然后只需计算这些细胞中有多少是活着的并返回。

于 2015-01-29T06:29:37.693 回答