2012-02-07 100 views
5

我已经用Java写了一个蛇游戏。我也想做的是为它创建一个演示(所以蛇会自己演奏)。我写了一个简单的演示,但蛇死得很快。那么,是否有任何算法或类似的问题?我相信这有点类似于国际象棋游戏的问题? 我希望那只蛇尽可能活着。谢谢。编写蛇游戏演示

+0

简单的解决方案=慢下来的蛇! – Mikhail 2012-02-07 06:31:21

回答

9

Google赞助的AI Challenge在2010年举办了“Tron”游戏。您可能会从搜索该挑战的解决方案中获得一些好点子。

如果你只是想要一个很简单的策略,使一个合理的演示,那么你可以尝试类似以下内容:

  • 永远不要使你崩溃,除非你有没有其他选择
  • 一招如果您的下一步移动迫使您在两个或多个不同的(未连接的)空间中进行选择,请始终移动到两个空间中较大的一个。这会阻止你的蛇太容易陷入困境。
  • 如果您沿着墙壁移动,请继续沿着墙壁98%的时间移动,并根据需要左右移动。这将帮助你的蛇看起来合理的智能化,并节省游戏区的空间。
  • 否则继续前进90%的时间,每次随机左右旋转5%(这会让你的演示更加无聊)。

除此之外,我不认为国际象棋风格的AI方法(移动搜索树)将工作得很好。您无法事先轻松搜索足够的动作。

1

没有为你工作,我可以告诉你,开始接近这样一个问题的最好方法是考虑蛇应该怎么做才能尽可能长存。为了保持活力,蛇应该遵循什么'经验法则'。对于初学者来说,蛇可能在它遇到障碍物之前转向,并且朝向不会被装箱的方向。因此,当蛇在它的尾部(或墙壁)的一个空间内并且朝向它与其他障碍物之间的距离最大的方向。另外,我相信蛇是一种游戏,电脑可以完美地演奏,在演示中你可能不会那么想,所以如果事情变得太一样的话,你总是可以随意抛出一些随机的东西来增添趣味。

2

这是不是你正在寻找的答案,但我张贴,因为我真的喜欢看你探索这个算法进一步修改,直到你发现自己有一个相当合理的AI:

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

如果你尝试,你可以把它变成一个真正优秀的AI:d