Я внедрил tic-tac-toc с ai, но теперь им приходится сталкиваться с одной проблемой, как оценивать доску игры tic-tac-toe?Tic-tac-toe rate алгоритм платы
Может быть, в начале я неописуемый, как он должен работать:
- Мы имеем п доску крестики-нолики игры (с различными вариантами)
- Наших ай должны ставкой, которая плата является лучшим для перейти/худшую для противника
- Ai высчитывает шаг минимаксного алгоритма (сделано)
проблемы в 2. есть ли способ, чтобы «курс» доска?
Я хочу сказать, что я не хочу, чтобы кто-нибудь написать мне код, просто, чтобы помочь мне найти алгоритм или что-то :)
Спасибо за помощь, ребята!
Редактировать # 1
Хорошо, у меня есть минимаксный играть доску, но как оценить много советов и выбрать лучший. Может быть, я не ясно говорю, что хочу, поэтому покажу это.
е = пусто
* x | e | e e | o | e
* ---+---+--- ---+---+---
* x | e | e e | o | e
* ---+---+--- ---+---+---
* o | e | e x | x | e
А теперь, моя реализация минимаксном Алгоритм Построения просто говорит мне, где я должен поставить свой знак (позволяет говорить о), но я должен сказать, на борту которого, так как использовать это, чтобы оценить всю доску, на которую можно играть?
Минимакс код:
minimax : function(tempBoard,depth){
if (CheckForWinner(tempBoard) !== 0)
return score(tempBoard, depth);
depth+=1;
var scores = new Array();
var moves = new Array();
var availableMoves = Game.emptyCells(tempBoard);
var move, possibleGame, maxScore, maxScoreIndex, minScore,minScoreIndex;
for(var i=0; i < availableMoves.length; i++) {
move = availableMoves[i];
possibleGame = Game.getNewBoard(move,tempBoard);
scores.push(Ai.minimax(possibleGame, depth));
moves.push(move);
tempBoard = Game.undoMove(tempBoard, move);
}
if (Game.turn === "ai") {
maxScore = Math.max.apply(Math, scores);
maxScoreIndex = scores.indexOf(maxScore);
choice = moves[maxScoreIndex];
return scores[maxScoreIndex];
} else {
minScore = Math.min.apply(Math, scores);
minScoreIndex = scores.indexOf(minScore);
choice = moves[minScoreIndex];
return scores[minScoreIndex];
}
}
Попробуйте взглянуть на алгоритм MINIMAX и изменить его, чтобы удовлетворить ваши потребности! –
Вы уверены, что этот метод возвращает __where__, игрок должен сделать свой ход? И я не имею в виду * где *, как на той доске, я имею в виду * где *, как в какой позиции. Из того, что я вижу, вы возвращаете только самый лучший __score__ для каждого игрока 'return score [minScoreIndex]' и 'return score [maxScoreIndex]'. Вы не возвращаетесь туда, где игрок должен сделать свой ход, чтобы достичь этого результата. –