为蛇游戏编写演示

时间:2012-02-07 06:08:59

标签: java

我用Java写了一个蛇游戏。我还想做的就是为它创建一个演示(所以蛇会自己玩)。我写了一个简单的演示,但是蛇死得很快。那么,对于那种问题,有没有算法或东西?我相信它有点类似于国际象棋游戏的问题? 我希望蛇尽可能活着。谢谢。

3 个答案:

答案 0 :(得分:9)

Google赞助的AI Challenge在2010年推出了“Tron”游戏。您可以从搜索解决方案中获得一些好主意。

如果您只想要一个非常简单的策略来制作合理的演示,那么您可以尝试以下内容:

  • 除非您没有其他选择
  • ,否则切勿移动导致您崩溃
  • 如果您的下一步行动迫使您在两个或更多不同(未连接)的空间之间进行选择,请始终移动到两个空格中的较大空间。这样可以防止你的蛇太容易陷入困境。
  • 如果您沿着墙壁移动,请在98%的时间内沿着墙壁移动,并根据需要左右移动。这将有助于您的蛇看起来相当聪明,并且还可以节省游戏场地的空间。
  • 否则90%的时间向前移动,每次左右随机转动5%(这会让你的演示更加无聊)。

除此之外,我认为国际象棋风格的人工智能方法(使用移动搜索树)不会很好。你无法提前轻松搜索足够的动作。

答案 1 :(得分:2)

这不是您正在寻找的答案,但我发布它是因为我真的希望您进一步探索此算法,修改它直到您发现自己有一个非常合理的AI:

解决这个问题的最简单的算法是“绕过边缘,然后向下弯曲”的方法。基本上,你从蛇开始,得到它向西移动,然后拥抱西墙,然后是天花板。然后你穿过每个可能的方块,就像一个紧身的,直到你到达底部,向西,然后重新开始。

如果你尝试,你可以把它变成一个非常优秀的AI:D

答案 2 :(得分:1)

在没有为你工作的情况下,我可以告诉你,开始解决这类问题的最佳方法是考虑蛇应该尽可能长久地生存下去。什么'经验法则'蛇应该遵循以保持活力。对于初学者来说,蛇可能在碰到障碍物之前转向它,并且朝向它不会被装箱的方向转动。因此,当它在它的尾部的一个空间内时,你可以编程蛇转动(或墙壁)朝向与其他障碍物之间距离最大的方向。另外,我认为蛇是一款可以完美播放的游戏,在你的演示中你可能不需要这样,所以如果事情变得太相同,你总是可以随意抛出一些随机性。