【问题标题】:Implementation of minimax algorithm for tic tac toe井字游戏的极小极大算法的实现
【发布时间】:2019-10-25 19:27:44
【问题描述】:

我需要让我的 tic tac toe AI 无与伦比。

计算机 AI 'O' 应该选择最佳着法。

我首先使用一个随机数来创建我的第一个游戏 AI,但现在的问题是让它变得无与伦比。我发现了一种叫做 minimax 算法的东西,但是当我在我的 JavaScript 代码中使用它时,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> 

        

它应该选择所有最好的举动并且永远不会失败。

【问题讨论】:

  • 恳请您花点时间帮助我处理此代码,我知道我会占用您的时间,但请帮助我,我真的需要帮助,谢谢
  • 你不明白minimax需要做什么吗?你不明白为什么你的代码不这样做吗?两者都有?
  • 是的,我不明白为什么我的代码不这样做
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。
  • 您的“运行代码 sn-p”按钮不产生任何输出,并且您没有指定问题(“它不起作用”不是规范)。请参阅这个可爱的 debug 博客寻求帮助。您应该发布调试尝试的结果,尤其是对操作的跟踪以及对程序偏离您预期的地方的一些见解。

标签: javascript minimax


【解决方案1】:

我没有 minimax 的解决方案,但我建议将其放入 eslint 演示中以帮助找出可能的错误。

ESLint Demo

这将有助于发现明显错误的事情。以下是我快速浏览后看到的一些内容:

  1. startGame 中的原版需要大写以匹配您的变量。
  2. empty 函数中的empty 变量需要重命名。
  3. 一般来说,你应该使用===来比较而不是==MDN comparison docs
  4. switchTurn 中的 else if(turn = human) 很可能不是单个 =。分配不应发生在 if 检查中。我敢打赌,你的意思是进行比较。
  5. 我没有看到gameOver 被使用。这可能会导致它永远运行,除非存在未粘贴到问题中的代码。

希望对您有所帮助!我猜还有一些需要更新的东西,但 eslint 可以帮助找到更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多