Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中二维游戏的路径搜索_Java_Algorithm_Graph_Path Finding - Fatal编程技术网

java中二维游戏的路径搜索

java中二维游戏的路径搜索,java,algorithm,graph,path-finding,Java,Algorithm,Graph,Path Finding,(首先,很抱歉我英语不好) Linux中有一个类似于“啃食”游戏的蛇游戏 游戏的一些功能!: -该电路板位于一个60*60的区域中,周围有墙,电路板中也有一些墙 -有四条蛇,4个程序员必须编写一个程序来查找它们的移动方法。(每个程序对应一条蛇) -决定下一步行动的时间是0.1秒,因此我们必须在0.1秒之前找到它,否则,snake将转到上一个方向 -蛇头不得撞击墙壁或其他蛇 -蛇不能向后移动(它是肮脏的,并且有负面影响) 墙的坐标在游戏中给了我们(x,y)。 在游戏的每个周期(0.1秒),其他蛇

(首先,很抱歉我英语不好)

Linux中有一个类似于“啃食”游戏的蛇游戏

游戏的一些功能!:

-该电路板位于一个60*60的区域中,周围有墙,电路板中也有一些墙

-有四条蛇,4个程序员必须编写一个程序来查找它们的移动方法。(每个程序对应一条蛇)

-决定下一步行动的时间是0.1秒,因此我们必须在0.1秒之前找到它,否则,snake将转到上一个方向

-蛇头不得撞击墙壁或其他蛇

-蛇不能向后移动(它是肮脏的,并且有负面影响)

墙的坐标在游戏中给了我们(x,y)。 在游戏的每个周期(0.1秒),其他蛇的心跳都会给我们

现在的问题是:如何找到最佳举措

你能帮我提出一些算法或者

多谢各位

您可以在此处看到游戏的屏幕截图:


大多数人都会提出类似于A*路径查找算法的建议,该算法在web上有很好的文档记录,我建议你去搜索这些建议中的任何一个。您需要做的是修改这些算法,使它们在给定的约束条件下正常工作。(建议使用A*并忽略0.1秒的限制不是很有帮助)

有几点我认为你应该考虑

    当你在寻找一条道路时,你不仅要考虑其他蛇和墙作为障碍,还要考虑它们潜在的下一步行动。你不希望蛇头在下一步发生碰撞。这可能需要追踪他们的头部

  • 您应该将路径搜索限制在一定的深度级别,这样您就不会耗尽时间。如果您使用A*算法,您应该会发现启发式元素将导致大多数路径指向您想要到达的点的方向。因此,如果你走近一点,下一次搜索可能会更容易

  • 点选择并不是那么简单。例如,你不应该只选择最近的点,因为你正在与其他蛇赛跑。你应该试着选择你知道或认为你能首先到达的点。你可以简单地测量蛇和所有点之间的距离。考虑到对方的蛇试图接近他们,看看你是否能打败他们,因为你离得更近。选择你认为你能赢的分数

  • 将自己视为障碍可以防止任何倒退


@alex我认为经典A*不适合这里,因为这里有“移动障碍”[多条蛇]-据我所知,这是无法预测的。@amit你可以测试细胞,看看是否有蛇占据它们。@alex:它只会给你解决方案的快照。。。如果我理解正确的话,这是蛇之间的某种竞争——因此像minmax这样的东西也应该参与其中。。。尽管我可能误解了手头的问题…:\n有人能给我一个java*算法实现吗?或者其他可以帮助我的东西!