Реализация минимаксного алгоритма для крестиков - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно сделать свой искусственный искусственный интеллект непобедимым.

ИИ компьютера должен выбрать лучший ход.

Я начинаю с использования случайного числа, чтобы создать свой первый ИИдля игры, но теперь проблема состоит в том, чтобы сделать ее непобедимой. Я нашел что-то, называемое минимаксным алгоритмом, но когда я использую его в своем коде JavaScript, минимаксный алгоритм работал, но для размещения 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> 

        

Он должен выбрать все лучшие ходы и никогда не проигрывать.

1 Ответ

1 голос
/ 25 октября 2019

У меня нет решения для минимакса, но я бы порекомендовал поместить его в демонстрационную версию eslint, чтобы помочь выявить возможные ошибки.

Демо ESLint

Это поможет увидеть вещи, которые были бы явно неправильными. Вот несколько вещей, которые я увидел при быстром просмотре:

  1. в верхнем регистре необходимо указать startGame, чтобы соответствовать вашей переменной вверх
  2. Переменная empty в empty функция должна быть переименована.
  3. Как правило, вы должны использовать === для сравнения вместо == MDN документы для сравнения
  4. else if(turn = human) inswitchTurn, скорее всего, не должно быть ни одного =. Назначение не должно происходить при проверке if. Могу поспорить, вы имели в виду, что для сравнения.
  5. Я не вижу gameOver используется. Это может привести к тому, что он будет работать вечно, если в вопросе не будет вставлен код.

Надеюсь, это поможет! Я предполагаю, что есть еще некоторые вещи, которые необходимо обновить, но eslint может помочь найти больше из них.

...