作为一些程序生成代码的一部分,我有一个函数可以检查网格中的单元格是否有任何相邻单元格。
网格是一个二维数组,如果它被打印出来,它看起来像这样(# = 单元格和 . = 空,边缘周围的 # 是边框):
0123456789
0##########
1#........#
2#........#
3#........#
4#........#
5#....##..#
6#........#
7#........#
8#........#
9##########
因此,例如,如果检查单元格 5,5,我的代码将返回 true。
我为检查相邻单元格而编写的代码有效,但没有考虑到它正在检查的单元格是否位于“边缘”(例如 0,0 或 0,1 或 10,10)并且将创建如果它确实检查边缘的单元格,则绑定错误。我不确定如何编写考虑到这一点的代码,任何建议都将不胜感激。
到目前为止,这是我的代码:
public static bool HasNeighbour(int[,] array, int CellX, int CellY)
{
if (array[CellX + 1, CellY] == 1)
{
return true;
}
if (array[CellX - 1, CellY] == 1)
{
return true;
}
if (array[CellX, CellY + 1] == 1)
{
return true;
}
if (array[CellX, CellY - 1] == 1)
{
return true;
}
if (array[CellX + 1, CellY + 1] == 1)
{
return true;
}
if (array[CellX + 1, CellY - 1] == 1)
{
return true;
}
if (array[CellX - 1, CellY + 1] == 1)
{
return true;
}
if (array[CellX - 1, CellY - 1] == 1)
{
return true;
}
return false;
}
另外,我的代码有更高效的版本吗?
谢谢