我試圖複製掃雷,我遇到了一個問題,算上鄰居是地雷。這似乎是一個非常容易的事情來實現,但由於某種原因,我沒有得到所需的結果無處不在。我有一個代表每個tile的1d數組。我想要一種方法分別考慮瓦片的每個鄰居,因爲它可能具有可變的網格大小。這裏是我的代碼是這樣的:掃雷鄰居計數
int num = 0;
if (i + 1 < 16 && graph[i + 1] == -1)
num++;
if (i - 1 >= 0 && graph[i - 1] == -1)
num++;
if (i + 3 < 16 && graph[i + 3] == -1)
num++;
if (i - 3 >= 0 && graph[i - 3] == -1)
num++;
if (i + 4 < 16 && graph[i + 4] == -1)
num++;
if (i - 4 >= 0 && graph[i - 4] == -1)
num++;
if (i + 5 < 16 && graph[i + 5] == -1)
num++;
if (i - 5 >= 0 && graph[i - 5] == -1)
num++;
return num;
而我沒有得到我想要的最左側和最右側的瓦片的結果。有時候最下面和最上面的瓷磚也有問題。我的代碼使用固定大小4x4(int [16])的網格(顯然我稱之爲圖:))。
在此先感謝。
使用2d數組或更好,但2d向量會使這更容易。 – NathanOliver