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

发布于 2022-09-06 19:58:05 字数 1931 浏览 35 评论 0

我想用 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];
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文