Java 二维阵列中的寻路

Java 二维阵列中的寻路,java,arrays,2d,a-star,path-finding,Java,Arrays,2d,A Star,Path Finding,假设我有这个2D阵列图 { 0,0,0,0,7,1,1,1,1,1,1,1,1 }, { 0,7,7,7,7,1,1,1,24,1,1,1,1 }, { 0,7,24,24,24,24,24,24,24,1,1,3,1 }, { 0,7,23,23,23,23,23,23,24,1,1,3,1 }, { 0,7,24,23,23,23,23,23,23,1,1,1,1 }, { 0,7,24,23,23,23,23,23,23,1,1,1,1 }, { 0,7,23,23,23,23,23,23

假设我有这个2D阵列图

{ 0,0,0,0,7,1,1,1,1,1,1,1,1 },
{ 0,7,7,7,7,1,1,1,24,1,1,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,1,3,1 },
{ 0,7,23,23,23,23,23,23,24,1,1,3,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,23,23,23,23,23,23,24,1,3,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,3,1,1 },
{ 0,0,0,0,1,1,1,1,1,1,1,1,1 },
我有一个散列集,里面有定义分块分块的整数。当我从我的玩家站立的位置点击地图的一部分时,有什么好的方法可以很好地进行寻路?A*(使用节点/etc)?你有什么建议


谢谢。

如果图形的大小实际上与您描述的示例的顺序一致,那么您可以安全地使用,因为它比A*更易于实现,并且如果您可以在几乎相同的时间内进行穷举搜索,则不需要使用启发式算法:)


至于你关于“使用节点/etc”的评论,这已经是一个图了,尽管有点像akward的表示。每个数组值都是一个节点,“边”由数组中的邻接给出。阻塞的分片可以通过禁止邻接(即,查找阻塞的分片列表以确定是否可以从当前正在考虑的节点访问另一个节点)来完成,或者正如Yossarian上面所建议的那样,只需将该分片的成本设置为大到实际上是无限的。但是,如果您采用后一种方法,您将希望确保这些平铺不会在不经意间以解决方案结束

对于使用*,我建议将阻塞的分幅设置为
int.MaxValue
值,并忘记任何哈希集。哪里是学习*?我试过谷歌\试试wikipedia:*搜索算法,在一个磁贴中移动的成本是否与另一个不同?@Dan\uu数组中的数字代表什么?它们定义了我的磁贴文件夹中的磁贴图像,因此tile/t1.png将是图像磁贴[]中的磁贴[1]。。。等等,你知道吗?这对我来说似乎有点超前。我将学习Java游戏AI和逻辑的基础知识。我有David Brackeen的《用Java开发游戏》和Jonathan S.Harbor的《开始Java游戏编程第二版》以及Andrew Davison的《用Java编写杀手级游戏编程》两本书。当我读到这些的时候,我会给你回电话的。胡萨@丹-这是一个很好的答案,你真的应该考虑一下。如果你害怕图形,只要使用一个像jgraph这样的图形库,它已经有了Djikstra最短路径函数。我来看看jgraph。想把我链接到它的网站吗?在谷歌上找不到它,因为它只是一个普通的词。@Dan,如果你对图形的表示有点困惑,也许邻接矩阵是开始阅读的好地方。如果以这种方式重新格式化数组,问题可能会突然变得简单得多。