编写贪吃蛇游戏演示的代码

5

我用Java写了一个贪吃蛇游戏。我还希望创建一个演示(让贪吃蛇自己玩)。我已经编写了一个简单的演示,但是贪吃蛇死亡得很快。所以,有没有算法或其他解决这种问题的方法?我认为这与象棋游戏问题有些相似?我希望贪吃蛇能够活得尽可能长。谢谢。


简单的解决方案 = 减缓蛇的速度! - Mikhail
3个回答

9
Google赞助的AI Challenge在2010年举行了“Tron”游戏比赛,你可以从寻找解决方案中获得一些好的想法。
如果你只想要一个非常简单的策略来展示一下,那么你可以尝试以下内容: - 永远不要做让你撞到的移动,除非你别无选择。 - 如果你的下一步强迫你选择两个或更多不同的(未连接的)空格之间,请始终移动到较大的空格。这将防止你的蛇过早被困住。 - 如果你沿着墙壁移动,请98%的时间沿着墙壁继续前进,根据需要向左或向右绕过它。这将有助于使你的蛇看起来相对聪明,并节省游戏区域的空间。 - 否则,90%的时间继续前进,5%的时间随机左转和右转(这将使你的演示不那么枯燥)。
除此之外,我认为象棋风格的AI方法(使用移动搜索树)可能不会很有效。你将无法轻易地预先搜索足够的移动。

2
这并非你要找的答案,但我发表它是因为我真的希望你能进一步探索这个算法,并对其进行修改,直到你得到一个相当合理的人工智能:
解决此问题的最简单算法是“沿着边缘走,然后向下蠕动”的方法。 基本上,你从一个蛇开始,让它向西移动,然后紧贴西墙,然后是天花板。 然后像弹簧玩具一样穿过每一个可能的方块,直到到达底部,向西走,重新开始。
如果你尝试,你可以将其转化为一个非常出色的人工智能:D

1

不为你完成工作,但我可以告诉你解决这个问题的最佳方法是考虑蛇应该如何尽可能长时间地存活。蛇应该遵循哪些“经验法则”才能保持生命。首先,蛇在撞到障碍物之前应该转向,并朝着不会被困住的方向。因此,您可以编程使蛇在距离自己的尾巴(或墙壁)一个空格的范围内转向,并朝着与其他障碍物之间距离最远的方向。此外,我相信贪吃蛇是一款电脑可以完美玩耍的游戏,在您的演示中,如果事情变得太单调,您可以随时添加一些随机性来增加趣味性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接