我正在尝试编写一个在 20x60 单元格的网格上实现康威生命游戏的程序。网格应该环绕,以便左侧连接到右侧,顶部连接到底部。
因此,任何位置为 的单元格(0, col)
都会在 处有一个邻居(maxRow, col)
。任何具有位置的单元格(row, 0)
将在 处有一个邻居(row, maxCol)
。
以下函数应该计算相邻单元格的数量。它适用于不在边缘的坐标,但不适用于边缘的坐标。例如,如果在(0, 10)
, (0, 11)
, , 处有点(0, 12)
,并且(0, 10)
传递给函数,它将返回一个高数作为邻居计数而不是1
。我知道 mod 运算符%
会有所帮助,但我不明白如何使用它。
{
int i, j;
int count = 0;
for (i = row - 1; i <= row + 1; i++)
for (j = col - 1; j <= col + 1; j++)
count += grid[i][j]; }
if (row==maxrow-1 || row==0)
count = count+ grid [(row-(maxrow-1))*-1][col-1]+grid[(row-(maxrow-1))*-1][col]+grid[(row-(maxrow-1))*-1][col+1];
if (col==0 || col==maxcol-1)
count=count +grid[row-1][(col-(maxcol-1))*-1]+grid[row][(col-(maxcol-1))*-1]+grid[row+1][(col-(maxcol-1))*-1];
count -= grid[row][col];
return count;
}