在 p5.js 中实现 Tic Tac Toe 的 Minimax 算法时遇到问题 - 需要帮助调试 AI 逻辑

问题描述 投票:0回答:1

问题:

我目前正在使用 p5.js 中的极小极大算法开发 Tic Tac Toe 游戏,并且遇到了 AI 行为的问题。尽管我很努力,但我似乎无法让人工智能正常工作。我在 p5.js 编辑器中添加了指向我的 p5.js 代码的链接以供参考:指向 p5.js 代码的链接

以下是相关代码片段:

function AI() {
  if (IsGameOver()) return;
  let bestMove = { x: 0, y: 0 };
  let bestScore = -Infinity;
  for (let i = 0; i < GRIDSIZE; i++) {
    for (let j = 0; j < GRIDSIZE; j++) {
      if (isMoveValid(i, j)) {
        makeMove(i, j);
        let score = MiniMax(4, false);
        undoMove(i, j);

        if (score > bestScore) {
          bestScore = score;
          bestMove = { x: i, y: j };
        }
      }
    }
  }
  makeMove(bestMove.x, bestMove.y);
}

function MiniMax(depth, isMax) {
  if (IsGameOver()) {
    if (currentPlayer == 1) {
      return 10;
    } else {
      return -10;
    }
  }
  if (isMax) {
    let bestScore = -Infinity;
    for (let i = 0; i < GRIDSIZE; i++) {
      for (let j = 0; j < GRIDSIZE; j++) {
        if (isMoveValid(i, j)) {
          makeMove(i, j);
          let score = MiniMax(depth-1, false);
          undoMove(i, j);
          bestScore = max(score, bestScore);
        }
      }
    }
    return bestScore;
  } else{
    let bestScore = Infinity;
    for (let i = 0; i < GRIDSIZE; i++) {
      for (let j = 0; j < GRIDSIZE; j++) {
        if (isMoveValid(i, j)) {
          makeMove(i, j);
          let score = MiniMax(depth-1, true);
          undoMove(i, j);
          bestScore = min(score, bestScore);
        }
      }
    }
    return bestScore;
  }
}

我已经彻底检查了代码,但我无法查明问题所在。 AI 没有做出预期的动作,或者有时会做出无效的动作。

有人可以看一下我的代码并提供一些指导或调试技巧吗?我渴望学习并感谢您提供的任何帮助或见解。

我一直致力于使用 minimax 算法在 p5.js 中调试 Tic Tac Toe 游戏的 AI 逻辑。为了解决这个问题,我尝试了以下方法:

  1. 审查我的代码:我仔细审查了我的代码,以确保极小极大算法的实现和游戏逻辑按照算法的原理正确实现。

  2. 与其他代码比较:我在 p5.js 中使用 minimax 查看了其他 Tic Tac Toe 实现,以比较我的代码并识别任何错误。

  3. 白板:我使用白板直观地绘制出游戏的状态、AI决策过程和潜在结果,以验证算法的逻辑是否符合我的预期。

尽管如此,我仍然对人工智能的行为有疑问。具体来说,我期望 AI 根据极小极大算法做出最佳动作,但它有时会做出意外或无效的动作。

我正在向社区寻求帮助,以帮助我识别代码或逻辑中导致此问题的问题。任何有关查找内容或如何调试此问题的见解或建议将不胜感激。谢谢!

javascript processing p5.js tic-tac-toe minimax
1个回答
0
投票

大家好我发现答案是刷新页面哈哈

© www.soinside.com 2019 - 2024. All rights reserved.