您的
minimax()和
negamax()功能正确。我认为那
state.getNextPlayer()将返回下一个要移动的玩家。这意味着您
evaluate()和
negamax()函数从该玩家的角度返回分数。
但是,
minimax()从的角度返回分数
max。所以,如果你尝试在取消
minimax()在你的
play()功能,这将导致一个错误
//int v = negamax(move, 10, a, b);int v = minimax(move, 10, a, b, false); // assumes perspective of min player ^^^^^if (v > a) { // assumes perspective of max player a = v; bestMove = move;}minimax()用
true参数替换对的调用应该可以解决该问题:
int v = minimax(move, 10, a, b, true); // assumes perspective of max player



