寻路2D Java游戏?

我目前正在根据Theme Hospital的想法编写一个非常基本的Java游戏。

我是Java的新手,我目前正在大学读书。 我已经做了近两年的Java,但是我终于把时间花在了一个体面的项目上。

我正处于需要创建一个人(病人)进入医院的阶段。 他们需要去接待处,然后去GP的办公室,然后回到他们的起始位置。

我已经研究过A *路径发现,但对我来说这似乎很复杂。 我理解它是如何工作的,但我不确定如何在游戏中实现它。

到目前为止,用户可以放置一个接待台,并建立一个GP的办公室。 这些中的每一个都具有“使用点”,这将是患者必须去的地方。 网格方块只能是满的,不会有不同的地形。

我对于粘贴任何代码都犹豫不决,因为它在过去的几个月中学习了很多与GUI相关的新技术,因为它很麻烦。 我的计划是到达里程碑1,让病人去办公桌然后离开办公室。 有了这个,我会更多地整理代码。

我见过许多A *和许多不同类型的实现。 有人可以给我一个我可以使用的起点吗? 我应该尝试调整已经编写的一组类,还是尝试从头开始编写自己的类?

你确实需要A *,它是基于网格的寻路的最佳实现。

这可能会帮助你:

http://www.cokeandcode.com/main/tutorials/path-finding/

编辑:前面的链接既适用于可实现的类集,也适用于自定义路径查找方法以满足您的需求。

这是我见过的最具信息量的寻路post: http : //www.ai-blog.net/archives/000152.html

“ 游戏开发者的AI ”一书对A *有很好的解释。 我今天真的要编写一个实现…如果我这样做,我会在这里抛出代码。

代码已经完成,它太大了,无法放在这里,所以你可以从以下url获取它: https : //chaos.bcit.ca/svn/public/astar/ (自签名证书,但服务器没有做任何邪恶的事情)。

我大部分时间都遵循了本书中的伪代码,但是我所做的一切都比我迄今为止看到的A *更加面向对象。

你有一个由瓷砖组成的迷宫。 每个Tile都有一个位置和一个障碍物(如果没有障碍物,则为null)。

您可以使用路径查找器(如AStar)查找给定开始和结束位置之间的最短路径。 你会得到一个Path back,其中包含你需要经历的从开始到结束的Tiles。

您可以通过提供不同的HeuristicCalculator来更改启发式计算(当前只检查是否存在障碍物并计算出要经历的最短Tiles数量,您可以为不同的障碍添加权重,例如,如果您不不喜欢默认的)。

代码是LGPL下的许可证,因此如果您进行更改并分发应用程序,则必须进行更改。 随意将错误报告/修复程序发送到许可证注释中的电子邮件地址(在每个标题中找到)。

我会(从来没有)在考试后到处评论,但我认为这是非常直接的。

当然,如果您编写自己的实现,您将学到很多关于寻路的知识。 但是你也会花很多时间做这件事。

查看一般处理图形的JGraphT库,它有一个很好的API,支持比A * 更短的路径算法。

也许你找到了你想要的东西,但这里有一个很好的解释A *寻路的链接。 我必须在C ++中为我的游戏实现A *,它帮助我理解它是如何工作的。

http://www.abdn.ac.uk/~csc245/teaching/CS1015/practicals/aStarTutorial.htm