我正在创建一个二维多人实时策略游戏,发生在一个迷宫内。我使用Growing Tree算法随机生成迷宫。我认为只要每个队伍到达终点的最短路径相等,那么迷宫对于每个队伍来说都是公平的。我通过制定游戏规则确保了这一点,即每个队伍的起点是另一个队伍的终点,反之亦然,因此两个队伍的最短路径始终相等。但在实践中,我注意到了其他问题。
当我尝试使用solution中的@tobias-k答案将结果完美的迷宫转化为非完美的迷宫时,这个问题突然出现在我脑海中。
[更新我的问题]
如果您已经拥有一条从起点到终点的迷宫路径,请使用以下变体:
然而,在我使用BFS计算出所有起点和终点距离之前,删除墙壁创建非完美迷宫时,我大多数情况下会得到这样的结果:
在这张图片中,有336个单元格更靠近红队的起点,而只有105个单元格更靠近蓝队的起点。即使在这两个区域之间拆除一堵墙(或多堵墙),也无法改变这种情况。
我的游戏是关于收集随机分布在迷宫中的宝藏,并在另一支队伍离开迷宫之前尽快逃出去,但由于地图不公平,其中一支队伍比另一支队伍更容易找到更多的宝藏。
所以我的问题是:
当我尝试使用solution中的@tobias-k答案将结果完美的迷宫转化为非完美的迷宫时,这个问题突然出现在我脑海中。
[更新我的问题]
如果您已经拥有一条从起点到终点的迷宫路径,请使用以下变体:
- 从起点和终点开始进行广度优先搜索,并记录迷宫中每个单元格距离起点和终点的步数。
- 将所有距离起点更近的单元格放入起始集合中,将所有距离终点更近的单元格放入目标集合中,以此来划分迷宫。
- 删除两个区域之间的墙壁,以添加从起点到终点的额外路径。
![3](https://istack.dev59.com/EYBEV.webp)
我的游戏是关于收集随机分布在迷宫中的宝藏,并在另一支队伍离开迷宫之前尽快逃出去,但由于地图不公平,其中一支队伍比另一支队伍更容易找到更多的宝藏。
所以我的问题是: