14

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

我对 Java 很陌生,目前正在大学第一年学习。我已经断断续续地做了近两年的 Java,但我终于把时间花在了一个像样的项目上。

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

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

至此,用户可以放置一个前台,搭建一个全科医生的办公室。每一个都有一个“使用点”,这将是患者必须到达的地方。格子方格只能满或不满,不会有不同的地形。

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

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

4

5 回答 5

10

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

这可能会帮助你:

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

编辑:前面的链接既可以作为一组可实现的类,也可以作为自定义寻路方法以满足您的满意度的指南。

于 2009-04-09T19:13:57.387 回答
4

这是迄今为止我看到的信息量最大的寻路帖子:http ://www.ai-blog.net/archives/000152.html

于 2009-04-12T11:45:30.060 回答
3

AI for Game Developers 》一书对 A* 有很好的解释。我今天实际上打算编写一个实现......如果我这样做了,我会把代码扔在这里。

代码写好了,放在这里太大了,可以从: https ://chaos.bcit.ca/svn/public/astar/ (自签名证书,但是服务器没有做恶)。

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

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

您可以使用路径查找器(如 AStar)来查找给定开始位置和结束位置之间的最短路径。你会得到一条返回路径,其中包括从开始到结束需要经过的瓷砖。

您可以通过提供不同的 HeuristicCalculator 来更改启发式计算(当前的只是检查是否有障碍物并找出要通过的最短瓷砖数,例如,如果您不这样做,您可以将权重添加到不同的障碍物'不喜欢默认)。

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

我会(从来没有)在考试后评论它,但我认为这很简单。

于 2009-04-09T19:14:11.800 回答
3

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

查看JGraphT库,它通常处理图,有一个很好的 API 并且支持比 A*更多的最短路径算法。

于 2009-04-09T23:03:56.880 回答
0

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

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

于 2012-04-16T10:33:47.333 回答