Я пытаюсь написать программу, которая реализует игру жизни Конвея на доске 20x60 ячеек. Сетка будет обернута так, что левая сторона будет соединена с (соседней) правой стороной, а верхняя часть будет соединена с нижней.
Таким образом, любая ячейка с позицией (0, col)
будет иметь соседа по позиции (maxRow, col)
. Любая ячейка с позицией (row, 0)
будет иметь соседа по позиции (row, maxCol)
.
Следующая функция предназначена для подсчета количества соседних ячеек. Работает для координат не на ребрах, но и не для тех что есть. Например, если есть точки (0, 10)
, (0, 11)
и (0, 12)
, а в функцию передано (0, 10)
, она вернет большое число в качестве счетчика соседей вместо 1
.
{
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;
}