我目前正在根据 Theme Hospital 的想法编写一个非常基本的Java游戏。
我是Java的新手,我目前正在大学读书。我已经做了近两年的Java,但是我终于把时间花在了一个体面的项目上。
我正处于需要创建一个人(病人)进入医院的阶段。他们需要去接待处,然后去GP的办公室,然后回到他们的起始位置。
我已经研究过A *路径发现,但对我来说这似乎很复杂。我理解它是如何工作的,但我不确定如何在游戏中实现它。
到目前为止,用户可以放置一个接待台,并建立一个GP的办公室。这些中的每一个都具有“使用点”,这将是患者必须去的地方。网格方块只能是满的,不会有不同的地形。
我对于粘贴任何代码都犹豫不决,因为它在过去的几个月中学习了很多与GUI相关的新技术,因为它很麻烦。我的计划是到达里程碑1,让病人去办公桌然后离开办公室。有了这个,我会更多地整理代码。
我见过许多A *和许多不同类型的实现。有人可以给我一个我可以使用的起点吗?我应该尝试调整已经编写的一组类,还是尝试从头开始编写自己的类?
答案 0 :(得分:9)
你确实想要A *,它是基于网格的寻路的最佳实现。
这可能会帮助你:
http://www.cokeandcode.com/main/tutorials/path-finding/
编辑:前面的链接既适用于可实现的类,也适用于自定义路径查找方法以满足您的需求。
答案 1 :(得分:4)
这是我见过的最具信息性的寻路帖子:http://www.ai-blog.net/archives/000152.html
答案 2 :(得分:3)
这本书AI for Game Developers对A *有很好的解释。我今天真的要编写一个实现...如果我这样做,我会在这里抛出代码。
代码已经完成,它太大了,无法放在这里,所以你可以从https://chaos.bcit.ca/svn/public/astar/获取它(自签名证书,但服务器没有做任何恶事)。
我大部分时间都遵循了本书中的伪代码,但是我所做的一切都比我迄今为止看到的A *更加面向对象。
你有一个由瓷砖组成的迷宫。每个Tile都有一个位置和一个障碍物(如果没有障碍物,则为null)。
您可以使用路径查找器(如AStar)查找给定开始和结束位置之间的最短路径。你会得到一个Path back,其中包括从开始到结束需要经过的Tiles。
您可以通过提供不同的HeuristicCalculator来更改启发式计算(当前只检查是否存在障碍物并计算出要经历的最短Tiles数量,例如,您可以为不同的障碍添加权重如果你不喜欢默认的话。)
代码是LGPL下的许可证,因此如果您进行更改并分发应用程序,则必须进行更改。随意将错误报告/修复程序发送到许可证注释中的电子邮件地址(在每个标题中找到)。
我会(从来没有)在考试后到处评论,但我认为这很直接。
答案 3 :(得分:2)
答案 4 :(得分:0)
也许你找到了你想要的东西,但这里有一个很好解释A *寻路的链接。我必须在C++中为我的游戏实现A *,它帮助我理解它是如何工作的。
http://www.abdn.ac.uk/~csc245/teaching/CS1015/practicals/aStarTutorial.htm