在这个实验练习中,我们将编写一个程序,它可以使用对象集合来解决一个中等复杂的问题。问题是在迷宫中找到一条路。在周三的课堂上,我开始构建解决这个问题所需的类。
首先下载包含我到目前为止为寻路问题编写的代码的项目。
该项目包含三个类的代码,一个Cell类、一个Maze类和一个Path类。
Cell类的代码已经完成。在本实验练习中,您将填写迷宫和路径类的剩余代码,然后编写一个主程序来解决迷宫。
我已经为Maze类中的一些方法提供了代码。您的第一个任务是为我没有完成的方法(包括主方法)填写代码,然后运行Maze程序以确认Maze类工作正常。
path类用于跟踪我们在迷宫中从入口到出口的进程。路径类的关键要求是
我已经提供了Path类的骨架,供您使用。Path类包含一个名为cells的数组列表,它允许我们沿着路径记录细胞序列。
您现在的工作是填充Path类中其余方法的代码,包括用于测试Path类的主方法的一些代码。在这个主方法中,您应该创建一个Path对象,向其添加一些单元格,打印路径,删除一些单元格,然后再次打印路径。
当我们完成了Cell、Maze和Path类的代码编写后,我们就拥有了解决迷宫问题的赢博体育要素。剩下唯一要做的就是向项目添加第四个类。该类将包含一个main方法,该方法执行以下操作:
为了执行寻路过程,我建议您编写一个单独的方法来实现寻路算法。以下是该算法的逻辑大纲:
while(退出节点不在路径的末尾){在路径的末尾附近找到一个开放节点如果可以找到开放节点,则标记为已访问并将其添加到路径中如果找不到开放节点,则从路径中删除最后一个节点}
这个简单的算法就是解决我们问题所需要的全部。这个算法足够聪明,可以从迷宫的死胡同中走出来,它不会陷入无限循环,它会继续搜索,直到找到一条出口的路径。