실습 프로젝트로 JSFiddle에서 Tic-Tac-Toe 게임을 만들었습니다 (이미 충분하지 않았기 때문에 맞습니까?) 나는 탁월한 AI를 추가하는 방향으로 진행했습니다. 대부분의 경우 작동하지만 컴퓨터가 최적의 이동을 올바르게 계산하지 못하게하는 일부 조합 (예 : X를 필드 5, 9, 3 또는 필드 3, 7, 9로 설정)이 있습니다.Javascript의 Minimax가 제대로 작동하지 않습니다.
JSFiddle에 프로젝트 : https://jsfiddle.net/jd8x0vjz/
그리고 63 행에서 시작 관련 기능 : 절을하는 경우 - 이러한 문제를 일으키는 나는 컴퓨터가 적절한를 계산 않기 때문에, 마지막 두 생각
function evaluateMove(move, player, depth) {
var gameStatus = evaluateGameStatus(move); //get status of current board
if (gameStatus < 2 && player)
return -1; //if human won, return -1
if (gameStatus < 2 && !player)
return 1; //if human lost, return 1
var returnValue = 0 //value to be returned later
for (var z = 0; z < 3; z++) { //loop for row
for (var s = 0; s < 3; s++) { //loop for column
if (move[z][s]) //if current slot has an x or o,
continue; //skip it
var nextMove = cloneGameStatus(move); //create temporary array with base of current grid
nextMove[z][s] = !player ? "x" : "o"; //assign first free field the appropriate symbol
var value = evaluateMove(nextMove, !player, depth+1); //recursion but with switched player, to add the correct icon afterwards
if ((value > returnValue) && player)
returnValue = value;
if ((value < returnValue) && !player)
returnValue = value;
}
}
return returnValue; //return value of current simulation
}
값 (디버거에서 관찰 가능)이지만, 때로는 덮어 씌여 지지만, 이것이 정말로 문제의 근원인지 확실하지 않습니다. 어떤 도움이나 조언을 부탁드립니다!
편집 : 문제가 해결되었습니다. 처음 대답이 아닌 경우 아래에서 내 대답을 찾으십시오.