【问题标题】:Pathfinding 2D Java game?寻路 2D Java 游戏?
【发布时间】:2010-10-18 15:26:15
【问题描述】:

我目前正在基于Theme Hospital的思想编写一个非常基础的Java游戏。

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

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

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

到目前为止,用户可以放置一个接待台,并建立一个全科医生的办公室。其中每一个都有一个“使用点”,这将是患者必须到达的地方。格子方格只能满不满,不会有不同的地形。

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

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

【问题讨论】:

  • 查看我的帖子以获得 A* 实现的链接。
  • 好问题,对我有很大帮助!但是,我认为这个问题将在 2020 年堆栈溢出中被标记为关闭,因为有些人在帖子中看不到代码:(

标签: java path path-finding


【解决方案1】:

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

这可能会对您有所帮助:

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

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

【讨论】:

  • 啊,是的,我在几个月前第一次研究我的游戏创意时发现了这个。我会重新阅读它,看看它是否有帮助。谢谢:)
【解决方案2】:

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

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

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

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

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

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

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

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

【讨论】:

  • 哇,我喜欢这样,响应速度非常快。谢谢,如果你这样做,那就太棒了。如果我确实使用了你的实现,我当然会给你充分的信任!
  • 别担心(反正这里只有少数以前的学生知道我的真名:-)
  • 只要您发布一些有趣、广泛或酷的内容,您就会得到快速响应。在没有多少人有经验的领域提出精确的技术问题,或者写得不好且细节很少的问题,你会看到 SO 更安静的一面。 :)
  • 代码已发布(见链接)
  • 链接无法访问。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 链接(实际上)已损坏。它重定向到该站点的主页。
    【解决方案5】:

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

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

    【讨论】:

    • 链接(实际上)已损坏:您无权访问此服务器上的 /~csc245/teaching/CS1015/practicals/aStarTutorial.htm。跨度>
    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多