我有25行13列的以下矩阵:
A B C D E F G
1 - - - - - - - - - - - 1 - - - - - - - - - - - 1
| x x x x x x x x x x x x x x x x x x x x x x x |
| x x x 1 - - - - - - - 1 - - - - - - - 1 x x x |
| x x x | x x x x x x x x x x x x x x x | x x x |
| x x x | x x x 1 - - - 1 - - - 1 x x x | x x x |
| x x x | x x x | x x x x x x x | x x x | x x x |
1 x x x 1 x x x 1 x x x x x x x 1 x x x 1 x x x 1
| x x x | x x x | x x x x x x x | x x x | x x x |
| x x x | x x x 1 - - - 1 - - - 1 x x x | x x x |
| x x x | x x x x x x x x x x x x x x x | x x x |
| x x x 1 - - - - - - - 1 - - - - - - - 1 x x x |
| x x x x x x x x x x x x x x x x x x x x x x x |
1 - - - - - - - - - - - 1 - - - - - - - - - - - 1
行和列被7除,我在AG的顶部放了一些字母,以便于看到。在矩阵中,我们有“ 1”。符号“ 1”表示放置游戏元素的可能位置{ {3}}。我试图弄清楚是否有人给我一个值“ 1”的单元格的(x,y),如何找到所有相邻单元格的坐标列表?
我尝试查找该单元格是否在内部矩形中,并根据Ox和Oy进一步直接计算出偏移量是什么,但它不起作用
答案 0 :(得分:4)
通常,我们可以使用以下结构来查找相邻的单元格:
topLeft = array[ x - 1 ][ y - 1 ]
top = array[ x ][ y - 1 ]
topRight = array[ x + 1 ][ y - 1 ]
midLeft = array[ x - 1 ][ y ]
midRight = array[ x + 1 ][ y ]
botLeft = array[ x - 1 ][ y + 1 ]
bot = array[ x ][ y + 1 ]
botRight = array[ x + 1 ][ y + 1 ]
请注意,以上代码可以应用于没有边界的单元格。否则,您将超出数组索引范围
这是所有可能的相邻单元格的列表。 目前尚不清楚您要如何处理此相邻单元格,因此这是我现在可以提供的信息。
回答您的问题“我如何找到所有相邻单元格的坐标列表?”
使用上述结构,您可以将坐标存储在矢量中,例如:
struct cords{
int cordX;
int cordY;
};
然后,使用上述命令找到相邻的单元格后,即可执行以下操作
cords c;
c.cordX = ...;
c.cordY=...;
vector<cords> coordinates;
coordinates.push_back(c);