Ich arbeite an der KI von Tic Tac Toe (Benutzer vs Computer) und ich benutze Minimax-Algorithmus, um beste Bewegung für Computer zu implementieren. Ich habe ein paar Videos auf Youtube angeschaut und den Code einiger Leute gelesen. Allerdings gibt es Teile des Codes Ich bin immer noch verwirrt von dem, was tut. Nehmen wir zum Beispiel den folgenden Code von Tic Tac Toe Minimax-Funktion. Es gibt eine Hauptsache, wenn, sonst wenn, else-Anweisung und alles andere kommt von dort. Mein Hauptproblem ist das Verständnis der eingebetteten for-Schleife und der 2 ifs, die darauf folgen. Ich habe ein paar Kommentare zu dem Zeug geschrieben, denke ich, tut es. Ich nahm den Beispielcode von diesem Youtube-Video: https://www.youtube.com/watch?v=x_Je9i3aKNk Minimax-Funktion für Tic Tac Toe.könnte jemand erklären Minimax Tic Tac Toe Algorithmus
//minimax function
function minimax(newGrid, depth, player) {
const gameState = isGameOver(newGrid);
//if the game is not over, evalute best move for computer
if(gameState === false) {
const values = [];
for(var i = 0; i < 3; i++) {
for(var j = 0; j < 3; j++) {
const gridCopy = _.cloneDeep(newGrid);
//if that spot is taken, skip to next loop
if(gridCopy[i][j] !== ' ') continue;
//if spot is player, evaluate
gridCopy[i][j] = player;
//need clarification
const value = minimax(gridCopy, depth+1, (player == PLAYER_TOKEN) ? COMPUTER_TOKEN : PLAYER_TOKEN);
values.push(value);
}
}
//need clarification for computer turn
if(player === COMPUTER_TOKEN) {
const max = _.maxBy(value, (v) => {
return v.cost;
});
if(depth === 0) {
return max.cell;
}
else {
return max.cost;
}
//need clarification for user turn
else {
const min = _.minBy(value, (v) => {
return v.cost;
});
if(depth === 0) {
return v.cell;
}
else {
return v.cost;
}
}
//if game state is null return 0
else if (gameState === null) {
return 0;
}
//if game state is player return negative
else if(gameState === PLAYER_TOKEN) {
return depth - 10;
}
//if game state is computer return positive
else if(gameState === COMPUTER_TOKEN) {
return 10 - depth;
}
}