给定:二维数组 - 4 行,4 列。需要将该数组的每个元素的值与前一个元素、下一个元素的值以及所比较的“上方”和“下方”元素的值进行比较是否相等。如何才能正确完成此操作?
我笨拙地尝试了这个,但是这段代码没有比较数组“边缘”的元素。
bool gameover = true;
int mapSize = 4;
for (int i = 1; i < mapSize - 1; i++)
{
for (int j = 1; j < mapSize - 1; j++)
{
if (labelsMap[i, j].Text == labelsMap[i - 1, j].Text || labelsMap[i, j].Text == labelsMap[i, j - 1].Text || labelsMap[i, j].Text == labelsMap[i, j + 1].Text || labelsMap[i, j].Text == labelsMap[i + 1, j].Text)
{
gameover = false;
}
}
}
if (gameover)
{
MessageBox.Show("Игра окончена!");
}
这里你需要明白一点
这与
对于下一个i。因此,需要向前和向下比较0到2的元素。就这样。
PS让我解释一下。向前和向下意味着行和列中的下一个元素。它可能看起来像这样:
这样,将执行所有比较,并且对于最后一行和最后一列,将有另一个条件命令。
PPS @MarkShcerbakov++。好吧,您需要添加一个输出才能使其真正变得更好。
问题是最外面的细胞根本没有被处理。他们也有邻居,只是数量较少。
我建议将搜索邻居的代码放入单独的方法中,添加条件以免超出字段:
为了不使用算法中的字段,我建议创建一个小的辅助函数来从字段中获取值
好吧,函数本身遍历每个单元格,获取该单元格的邻居,如果至少有一个匹配,那么我们认为我们已经丢失了
该选项允许您检查整个数组,包括最后一列和最后一行,消除出现以下情况的可能性
IndexOutOfRangeException:紫外线。 @rotabor,感谢您的提示。