查找最长路径网格



我使用的是一个只允许在正交方向上移动的统一成本网格。这被用作游戏蛇的基地,蛇必须不断地移动并试图吃掉棋盘上的苹果。食物的定位和防撞是使用经典的AStar算法来找到蛇头和食物之间的最短路径。然而,这种方法有时会导致蛇寻找食物,从而导致它没有明确的路径去寻找下一种食物。这条蛇最终被卡在一个不规则形状的矩形中,目前还没有未来的模拟。

我的问题是:有没有办法在不规则的矩形内找到最长的动作链,以便活得最久,并可能让蛇的尾巴停止阻挡通往下一个食物的路径?我研究了Hamilton算法,试图访问所有节点,但似乎没有不规则形状的解决方案。解决方案不一定是完美的,但应该总是给蛇最好的机会逃离陷阱。

有什么想法吗?

board[][](让我们将板视为2D阵列(

现在为你的蛇占据的细胞标记板[i][j]='S'

标记板[i][j]=''(空白(用于空闲单元格

现在你的A*应该给你一条从蛇头到食物的路。将此路径中的所有单元格标记为"#"。(可选:从蛇的尾巴上取消标记n-1个"S"细胞,其中n是从蛇头到食物的最短路径。这是因为经过n步后,蛇的尾巴也会移动(

现在,对于所有未来的位置(在棋盘上随机取10个空位(,看看你是否可以只使用空位单元格从食物位置到达所有这些位置。(您可以在单个DFS中执行此操作(。如果你能够访问,那么使用你选择的路径是安全的。否则,就另辟蹊径。

最新更新