【发布时间】:2012-10-16 16:44:24
【问题描述】:
我开始使用 C# 编写地牢爬虫,并且已经编写了关卡生成代码。
但是,我遇到了一个问题。我的关卡地图存储在一个 32x32 的多维数组中,每个图块存储为一个字符串。除以下所有图块(所有这些名称都是代表该图块的变量名称)(mongroveplant、tree、hjalaplant、vnosplant、barraplant、weedplant、naroplant、deathweedplant、venustrap、strangulator、雕像、emptiness 和 stonewall)之外的所有图块都不能走过去。
这些图块(可以走过去)构成更长的列表,可在此处找到:Walkable Tiles。在 32x32 多维数组的每个条目中,每个条目都是一个字符串。
如何创建一个寻路算法,避免上面列出的所有图块,但可以遍历链接中列出的所有图块?我正在尝试从“开始”磁贴到“退出级别”磁贴。
【问题讨论】:
-
我所做的只是计算最短路径。我已经尝试过 A* 算法,仅此而已。我不知道如何使它适合我的需要。
-
不同的瓷砖有不同的旅行费用,还是所有瓷砖的费用都一样?如果所有瓷砖从瓷砖到瓷砖的旅行成本都相同,那么 A* 可能是多余的,我在这里的回答可能会有所帮助stackoverflow.com/questions/11173116/pathfinding-issues
-
如果瓷砖不能行走,那么它就是一面“墙”,不是吗?因此,您可以对迷宫进行预处理,将不可行走的瓷砖替换为墙,然后使用算法找到最短路径。如果你不能预处理(因为只知道-neighbour-tile属性),那么无论你想找到全局优化还是局部优化,你都必须使用蛮力找到优化的解决方案。
标签: c# path-finding