将最小值函数从 Java 转换为 Java 脚本

这将是一堵巨大的代码墙,但我希望有人有时间和耐心来帮助我。

我目前正在尝试为我的HTML井字游戏创建一个AI播放器。我正在使用这个资源,其中包含使用最小值算法在Java中编程的工作AI播放器代码:https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaGame_TicTacToe_AI.html(第1.5节)

我想把这个给定的爪哇代码翻译成脚本。资源代码和我的 HTML/JS 代码之间的一个主要区别是,资源使用 2 维数组作为游戏板,而我使用一维数组。

这意味着资源的数组如下所示:其中第一个索引表示行,第二个索引表示列;我的数组看起来像这样:它的长度为9,表示从左上角到右下角读取的板,因此例如左上角单元格位于索引0处,右中单元格位于索引5处。Cell[][] cells;let board_array = [];

另一个细微的区别是,资源使用玩家种子存储在细胞数组中,而我只将字符串用于人类和AI。'X''O'

我花了很多时间试图将给定的Java函数翻译成我的JS脚本,但无论我怎么尝试,总是作为最终的最佳单元格返回,根据我的理解,只有当没有可用的单元格时才会发生这种情况,这表明游戏已经结束。我已经做了一些控制台.log调试,我可以看到在递归过程中,在某些时候实际上有合法的最佳单元格被返回(例如0或4),但在最终返回中它总是-1。minimax-1

我敢打赌,我的错误要么在于从二维数组到一维数组的错误翻译,要么它与JS在特定行中做一些与Java完全不同的事情有关。我可以想象数组中的二进制值或函数中对它们的操作可能会带来麻烦。我不知道它在JS中是否像这样工作,但它不会抛出任何错误,所以我无法自己弄清楚。WINNING_PATTERNShasWon


红糖糍粑
浏览 84回答 1
1回答

交互式爱情

自 ES6 以来,二进制数在 JavaScript 中是可能的 -&nbsp;ecma-262和JavaScript中的按位运算符(例如<<)是可能的 -&nbsp;按位链接与Java相比,其余的代码应该更简单我看到的最后一个区别:(1.79E + 308)与Java的(2147483647)不同 - 不确定这有多重要?Number.MAX_VALUEInteger.MAX_VALUE
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript