我有一个Tiles类的二维数组。在创建游戏场地时,我需要生成所有直接相邻的单元格(水平、垂直、对角线)。我从生成填充每个单元格的新瓷砖开始,然后(当完成时)通过以下循环遍历2d数组以计算邻居:
使用这种方法,我必须再次循环遍历整个二维数组,创建一个for循环,在一个for循环中,在一个for循环中,在一个for循环中,有时候不是很清楚。肯定有更好的方法,对吧?
我找到了一个帖子,看起来有些相似但不完全一样,或者我没有正确理解它:
int dnDistance= 1; //Direct Neighbor Distance.
for (int iMapY = 0; iMapY < playfieldHeight; iMapY++)
{
for (int iMapX = 0; iMapX < playfieldWidth; iMapX++)
{
for (int yOffset = -dnDistance; yOffset <= dnDistance; yOffset++)
{
for (int xOffset = -dnDistance; xOffset <= dnDistance; xOffset++)
{
if ((iMapX + xOffset >= 0 && iMapX + xOffset < playfieldWidth) && (iMapY + yOffset >= 0 && iMapY + yOffset < playfieldHeight))
{
if (!(yOffset == 0 && xOffset == 0))
{
playfieldTiles[iMapX, iMapY].dnTiles.Add(playfieldTiles[iMapX + xOffset, iMapY + yOffset]);
}
}
}
}
}
}
使用这种方法,我必须再次循环遍历整个二维数组,创建一个for循环,在一个for循环中,在一个for循环中,在一个for循环中,有时候不是很清楚。肯定有更好的方法,对吧?
我找到了一个帖子,看起来有些相似但不完全一样,或者我没有正确理解它: