用vue.js 写的 MiniMax 算法的 TicTacToe 不起作用

我想用 vue.js 实现一个 miniMax 算法的 TicTacToe 的 AI。 但是我的算法似乎不起作用,每次AI都会返回下一个空格。。。我不知道问题在哪T_T。。。跪求大神帮我指出错误。。。

我的项目链接是:https://github.com/demongodYY...

我写的 miniMax 函数代码片段如下:

    checkScore(cells, role) {
      const status = this.checkWin(cells, role) || this.checkTie(cells);
      switch(status){
        case 'X':
          return 10
        case 'O':
          return -10
        case 'Tie':
          return 0
      }
      return false;
    },

    miniMax(cells, role) {
      let newCells = this.createNewCells(cells);
      let score = this.checkScore(newCells, role);          
      if(score !== false) {
        return {score:score};
      }
      let results = [];
      for (let row = 0 ; row < newCells.length; row++){
        for (let col = 0; col < newCells[row].length; col++) {
          if (newCells[row][col] !== ''){
            continue;
          }
          newCells[row][col] = role;
          let index = {row,col};
          let result = {};
          result.index = index ;
          // console.log(index);
          if(role == 'X') {
            result.score = this.miniMax(newCells, 'O').score;
          } else {
            result.score = this.miniMax(newCells, 'X').score;
          }
          results.push(result);
        }
      }
      let bestMove;
      if(role == 'X' ) {
        let bestScore = -1000;
        for (let i = 0; i< results.length; i++) {
          if (results[i].score > bestScore) {
            bestScore = results[i].score;
            bestMove = i;
          }
        }
      } else {
        let bestScore = 1000;
        for (let i = 0; i< results.length; i++) {
          if (results[i].score < bestScore) {
            bestScore = results[i].score;
            bestMove = i;
          }
        }
      }
      return results[bestMove];
    }
阅读 2.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题