【问题标题】:Snake Game Artificial Intelligence贪吃蛇游戏人工智能
【发布时间】:2013-08-20 22:45:57
【问题描述】:

我正在为 iOS 开发一个贪吃蛇游戏: https://github.com/ScottBouloutian/Snake

我的目标是让 AI 以最佳方式完成蛇游戏(让蛇填满棋盘)。

我正在使用 IDA* 寻找一条从蛇的当前位置到食物的路径。这行得通。但是,该算法没有考虑到将来可能需要获得更多食物的事实。因此,有时它往往会陷入困境。

即蛇在任何特定时间的目标都是寻找食物,而它的目标应该是填满棋盘(沿途寻找食物)。

如何添加或修改这种方法以使 AI 赢得蛇游戏?我应该使用更好的方法吗?我只是想提出一些想法。谢谢!

【问题讨论】:

  • 对我来说听起来是个好方法。 A* 的诀窍是选择一个好的启发式算法。您需要考虑如何选择一种启发式方法来提供您正在寻找的行为。

标签: artificial-intelligence


【解决方案1】:

如果棋盘是一个静态矩形(不是圆环 - 所以不会跨越边界),那么唯一的最佳策略是找到一个一组最长的闭合路径穿过棋盘,这样每个点in the board 至少在一条路径中。

如果棋盘是空的(没有障碍物),那么表单中存在“终极”路径

 16|.1|.6|.7
 15|.2|.5|.8
 14|.3|.4|.9
 13|12|11|10

它穿过所有瓷砖,遵循这种模式的蛇最终会吃掉所有食物,并填满整个棋盘

如果有一些障碍,那么这样的路径不一定存在,那么你应该找到一组这样的最长路径,并在它们之间切换,当食物出现在当前路径的无法到达的地方。

例如

#######
#.....#
#.#.#.#
#.....#
#######

在这里,您必须考虑两条路径,一条最长,绕过整个棋盘,但错过了中心点,还有一条小环穿过它。只要食物没有出现在中心,就应该使用外环。希望当你填满所有剩余的块时食物出现在中心 - 你会“赢”。如果它出现得更快 - 你必须吃掉它(切换到另一个循环)并且取决于你当前的长度 - 你会回到最好的循环,或者击中你的尾巴并“输掉”。在每种情况下,您的分数都将是在此食物位置的黑板上获得的最高分。

基于非 A* 的方法会找到最优解,这是完全不同的问题,您应该寻找 最长闭合 路径,而不是 最短 >.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多