我需要使我的井字游戏AI无与伦比。
计算机AI'O'应该选择最佳动作。
我从使用随机数开始为游戏创建我的第一个AI,但现在的问题是使其无与伦比。我找到了一个叫做minimax算法的东西,但是当我在JavaScript代码中使用minimax算法时,minimax算法可以工作,但是放置O会花费一些时间,并且它没有选择最佳移动,所以我必须添加或更改才能制成计算机自动选择最佳动作。如果有人可以帮助我找到答案,那真的会帮助我,谢谢。
这是我的JavaScript代码:
td {
height: 100px;
width: 100px;
font-size: 20px;
text-align: center;
}
<body onload="startGame();">
<div id="message">sss</div>
<table class="squares" border = "1">
<tr>
<td class="square" id="s1" onClick="nextMove(this)"></td>
<td class="square" id="s2" onClick="nextMove(this)"></td>
<td class="square" id="s3" onClick="nextMove(this)"></td>
</tr>
<tr>
<td class="square" id="s4" onClick="nextMove(this)"></td>
<td class="square" id="s5" onClick="nextMove(this)"></td>
<td class="square" id="s6" onClick="nextMove(this)"></td>
</tr>
<tr>
<td class="square" id="s7" onClick="nextMove(this)"></td>
<td class="square" id="s8" onClick="nextMove(this)"></td>
<td class="square" id="s9" onClick="nextMove(this)"></td>
</tr>
</div>
</table>
它应该选择所有最佳动作,并且永远不会失败。
答案 0 :(得分:1)
我没有minimax的解决方案,但我建议将其放入eslint演示中,以帮助找出可能的错误。
这将有助于发现明显错误的情况。我快速浏览了以下内容:
startGame
中大写,以将您的变量排在首位empty
函数中的empty
变量需要重命名。===
进行比较,而不要使用==
MDN comparison docs else if(turn = human)
中的switchTurn
应该很可能不是单个=
。 if
检查中不应进行分配。我打赌您的意思是进行比较。gameOver
。除非有未粘贴到问题中的代码,否则这可能导致它永远运行。希望有帮助!我猜还有很多事情需要更新,但是eslint可以帮助您找到更多的东西。