C# 在';我走到了死胡同

C# 在';我走到了死胡同,c#,artificial-intelligence,maze,C#,Artificial Intelligence,Maze,在迷宫中前进相当容易,但我似乎不知道如何在遇到死胡同时,在迷宫中后退尝试新路线,而不会后退太远?通过保留一堆以前的方向决定来使用。通过保留一堆以前的方向决定来使用。最简单的(实现)算法是只保留一堆你去过的地方,以及你从每个地方走的路线,除非回溯给你这些信息 要返回,只需从堆栈中弹出旧位置并检查该位置的更多出口,直到找到具有未测试出口的旧位置 通过每次以相同的顺序持续测试出口,如果您知道回溯到某个位置是从下降开始的(即上次您在旧位置时,您下降了),那么您只需在下降后选择下一个方向 我不完全确定你说

在迷宫中前进相当容易,但我似乎不知道如何在遇到死胡同时,在迷宫中后退尝试新路线,而不会后退太远?

通过保留一堆以前的方向决定来使用。

通过保留一堆以前的方向决定来使用。

最简单的(实现)算法是只保留一堆你去过的地方,以及你从每个地方走的路线,除非回溯给你这些信息

要返回,只需从堆栈中弹出旧位置并检查该位置的更多出口,直到找到具有未测试出口的旧位置

通过每次以相同的顺序持续测试出口,如果您知道回溯到某个位置是从下降开始的(即上次您在旧位置时,您下降了),那么您只需在下降后选择下一个方向

我不完全确定你说的返回太远是什么意思,我想你会想回到之前你没有测试过的路线,这不是你想要的吗

请注意,除非您尝试跟踪从起点到当前位置的路径,并在尝试查找新路线时避免这些方块,否则您可能最终会进入圆圈,这最终会使堆栈过大

一个简单的递归方法可以很容易地做到这一点,它可以标记它所采用的路径,并且从不进入被标记的区域

此外,如果你的东西在迷宫中移动比仅仅能够移动并撞(停)墙稍微聪明一点,因为它可以从当前点看到所有方向,那么我有其他算法可能会有所帮助。

最简单(实现)的算法就是只保留一堆你去过的位置,以及你从每一条路线走的路线,除非回溯给你这些信息

要返回,只需从堆栈中弹出旧位置并检查该位置的更多出口,直到找到具有未测试出口的旧位置

通过每次以相同的顺序持续测试出口,如果您知道回溯到某个位置是从下降开始的(即上次您在旧位置时,您下降了),那么您只需在下降后选择下一个方向

我不完全确定你说的返回太远是什么意思,我想你会想回到之前你没有测试过的路线,这不是你想要的吗

请注意,除非您尝试跟踪从起点到当前位置的路径,并在尝试查找新路线时避免这些方块,否则您可能最终会进入圆圈,这最终会使堆栈过大

一个简单的递归方法可以很容易地做到这一点,它可以标记它所采用的路径,并且从不进入被标记的区域


此外,如果你的东西在迷宫中移动比只能够移动并撞(停)墙稍微聪明一点,因为它可以从当前点看到所有方向,我有其他算法可能会有所帮助。

埃里克·利珀特(Eric Lippert)写了一系列关于创建,哪个可能更有效。

埃里克·利珀特(Eric Lippert)写了一系列关于创建一个可能更有效的迷宫的文章。

迷宫的想法不是你不知道整个布局吗?A*在这种情况下仍然有效吗?迷宫的想法不是你不知道整个布局吗?A*在这种情况下仍然有效吗?