簡體   English   中英

包裝在Conway的《 C ++生活游戲》中

[英]Wrapping in Conway's Game of Life C++

我正在嘗試編寫一個程序,在20x60的單元板上實現Conway的生活游戲。 網格將環繞,因此左側將連接到右側(相鄰),頂部將連接到底部。

因此,位置(1, col)任何像元將在(maxRow, col)處具有鄰居。 位置為(row, 1)任何像元將在(row, maxCol)處具有鄰居。

應該使用以下函數來計算相鄰小區的數量。 它適用於不在邊緣的坐標,但不適用於邊緣的坐標。 例如,如果在(1, 10)(1, 11)(1, 12) (1, 11)處有點,並且(1, 12) (1, 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;
    } 

首先,我將網格更改為從0開始而不是從1開始。

然后,您可以編寫一個簡單的循環:

int count = 0;
for (i = row - 1; i <= row + 1; i++) {
   for (j = col - 1; j <= col + 1; j++) {
      if(i != row && j != col) {
         count += grid[(i + maxrow)%maxrow][(j + maxcol)%maxcol];
      }
   }
}

+ maxrow是為了確保索引為正。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM