您使用什么游戏引擎?我建议跟踪网格(2D数组)中的管道六边形对象。试想一下,栅格的第二行每移进一个六边形大小的一半)。然后,您可以简单地通过该网格访问所有邻居。最终,您需要在Pipe Tile对象内使用一个函数,例如
bool canFlowTo(pipe_tile & other)
您为管道图块本身和“其他”图块的每个可能的星座实现正确答案。要检查管道的流向,只需在网格中将其所有邻居调用此函数即可。
当然,您也可以使用物理引擎来解决这个问题,而不用代码来检查迷宫的正确性。为此,只需为每个具有正确形状的图块设置对撞机即可。对于液体物理学,您绝对应该使用一些现有的引擎。
哦,顺便说一句,与通用C ++算法没有真正关系的游戏问题在这里可能更合适:https://gamedev.stackexchange.com/