我正在尝试使用 2D 矢量构建一个简单的扫雷应用程序。首先,我用 1 和 0 填充方块(1 表示地雷,0 表示清除)。
srand(time(NULL));
for (int i = 0; i < battlefield.size(); i++)
{
for (int j = 0; j < battlefield[i].size(); j++)
{
int num = (rand() % 2);
battlefield[i][j] = num;
}
}`
然后,我再次遍历向量并计算周围地雷的数量。这就是我遇到问题的地方。我认为当它试图检查一个超出范围的方块时,它会爆炸。但是,如果在任何这些检查之前失败。如果在尝试查看当前平方是否等于 1 时失败。
for (int i = 0; i < battlefield.size(); i++)
{
for (int j = 0; j < battlefield[i].size(); j++)
{
int count = 0;
if (battlefield[i][j] == 1)//mine square
{
if (battlefield[i - 1][j - 1] != 0)
{
count++;
}
if (battlefield[i][j - 1] != 0)
{
count++;
}
if (battlefield[i + 1][j - 1] != 0)
{
count++;
}
if (battlefield[i - 1][j] != 0)
{
count++;
}
if (battlefield[i + 1][j] != 0)
{
count++;
}
if (battlefield[i - 1][j + 1] != 0)
{
count++;
}
if (battlefield[i][j + 1] != 0)
{
count++;
}
if (battlefield[i + 1][j + 1] != 0)
{
count++;
}
battlefield[i][j] = count;
}
}
我不太确定为什么它在那里失败了,有什么想法吗?