在Java中寻找2D游戏的路径

时间:2012-03-17 11:22:16

标签: java algorithm graph path-finding

(起初,对不起我的英语不好)

有一个蛇游戏就像是Linux中的“Nibbles”游戏。

一些游戏功能!:

- 电路板位于60 * 60的场地内,被墙壁包围,电路板上也有一些墙壁。

- 有4个程序员必须编写一个程序来查找它们的移动方法。(每个程序为一个Snake)

-time决定下一次移动的时间是0.1秒,所以我们必须在0.1秒之前找到它,否则,蛇会转到前一个方向。

-Snake的头部不得撞到墙壁或其他蛇。

-Snake不能向后移动(这是犯规并且有负面意义)

...............

墙壁的协调是在游戏(x,y)给我们的。 在游戏的每个周期(0.1秒),我们都会给予其他蛇的诅咒

................

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

你可以通过建议任何算法或者......来帮助我吗?

谢谢。

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

Snake Game

1 个答案:

答案 0 :(得分:2)

大多数人都会提出类似A *路径查找算法的建议,该算法在网络上有很好的记录,我建议你去搜索这些建议。您需要做的是修改这些算法,以便它们在您给出的约束条件下运行良好。 (建议A *并忽略0.1秒限制并不是非常有帮助)。

我认为你应该考虑几点

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

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

  • 点选择并非完全无关紧要。例如,你不应该只选择最近的点,因为你正在争夺其他蛇。您应该尝试选择您知道或认为可以先到达的点数。您可以简单地测量蛇与所有点之间的距离。考虑到彼此的蛇正试图寻找最接近它们的点,并看看你是否可以击败它们,因为你离它们更近了。选择你认为可以获胜的分数。

  • 考虑到自己的障碍会阻止任何向后移动。