【发布时间】:2018-03-12 05:43:16
【问题描述】:
我正在使用 miniMax 算法构建一个基本的 tictactoe 游戏,并且我在 JavaScript 中有一个可以运行的实现。但是,我正在为其提供一些测试板状态,但它似乎并没有按我预期的方式工作。例如,如果我喂它
['o', '1', 'x',
'x', 4, 5,
'x', 'o', 'o']
它告诉我 X 的下一个正确移动是索引 4(获胜状态。)但是如果我喂它
['o', 'x', 2,
'o', 4, 5,
'x', 7, 'x']
它告诉我 O 的下一个正确移动是索引 2(这是一个瞬间失败,因为 X 将通过占据位置 7 获胜。
所以基本上我想知道的是这是否重要。通过游戏进程,我不相信第二个示例中的棋盘布局是使用算法实际发生的布局,无论 X 做什么,运行 O 的计算机都不会让棋盘进入这种状态,所以也许我的实现是正确的。 miniMax 应该能够处理这个(或任何板状态)还是这个测试板状态只是它无法处理的一个,因为它是“不可能的”状态。我不信任我不完全理解的代码,因此欢迎任何建议。
我的实现的完整代码在 Github 上:https://github.com/cugamer/tictactoe/tree/master/lib
【问题讨论】:
-
只需设置两个机器人,让它们互相对战
-
O 在第二局没有“正确”的走法,因为无论 O 做什么,X 都能赢,所以 O 的每一步都同样糟糕。
标签: javascript minimax