我试图复制扫雷,我遇到了一个问题,算上邻居是地雷。这似乎是一个非常容易的事情来实现,但由于某种原因,我没有得到所需的结果无处不在。我有一个代表每个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