2009-04-09 112 views
10

我目前正在编写一个非常基础的Java游戏,基于这个想法Theme Hospital寻路2D Java游戏?

我对Java很陌生,目前正在大学读书,第一年就读。我已经完成了近两年的Java开发和关闭,但我终于把时间花在了一个体面的项目上。

我正处于需要创建一个人(病人)入院的阶段。他们需要前往前台,然后是GP的办公室,然后回到原来的位置。

我已经看过A *路径发现,但对我来说似乎很复杂。我了解它的工作原理,但我不确定如何将其应用到我的游戏中。

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

我很犹豫要不要粘贴任何代码,因为它很混乱,因为在过去的几个月里我学习了很多新的GUI技术。我的计划是迈向里程碑1,让病人走到办公桌前,然后离开办公室。一旦我有了这个,我将更多地整理代码。

我见过很多A *和许多不同类型的实现。有人能给我一个我可以使用的起点吗?我是否应该尝试修改已经写好的一组课程,或者尝试从头开始编写自己的课程?

+0

查看我的帖子以获取链接到A *实现。 – TofuBeer 2009-04-13 21:43:11

回答

6

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

这可能会帮助你:

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

编辑:的前述链接有利于既作为一个可执行的组类和自定义路径寻找方法,以达到您的满意指南。

+0

啊,是的,我发现这个月前,当我第一次研究我的游戏理念的东西。我会重新阅读它,看看它是否有帮助。谢谢:) – Relequestual 2009-04-09 19:17:19

4

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

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

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

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

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

可以通过提供不同的HeuristicCalculator改变启发式计算(目前1只检查,看看是否有障碍物或没有和计算出瓷砖的最短数穿过去,你可以添加的权重为不同的障碍实例如果你不喜欢默认)。

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

我会(从来没有)在考试后得到评论,但我认为它非常简单。

+0

哇,我喜欢这样,非常快速的回应。 谢谢,如果你这样做会很棒。 如果我确实使用你的实现,我当然会给你充分的信贷! – Relequestual 2009-04-09 19:16:20

+0

不用担心(只有少数以前的学生在这里知道我的真实姓名:-) – TofuBeer 2009-04-09 19:41:59

+1

只要你发布一些有趣,广泛或酷的东西,你会得到快速的回应。在没有多少人有经验的领域有精确的技术问题,或者没有详细的书面问题,你会看到SO的安静方面。 :) – 2009-04-09 23:26:59

2

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

查看一般处理图的JGraphT库,它有一个很好的API,并且支持最短路径算法而不仅仅是A *。