Ich verstehe Tic-Tac-Toe mit Minimax-Algorithmus, wo Terminal-Fälle gewinnen, verloren und zeichnen - 10,0, -10.Was wird der Terminalfall von maxconnect4 Spiel sein?
Programm endet, wenn jemand gewinnt, verliert oder zeichnet. Wie verbinden vier Spiel haben nicht drei Terminal-Staaten, anstatt eine Anzeigetafel, nachdem das Spiel beendet ist, Wie ermittle ich seine Terminal Fällen von der Bewertungsfunktion? Wie implementiert man die Bewertungsfunktion?
int minimax(char board[3][3], int depth, bool isMax)
{
int score = evaluate(board);
// If Maximizer has won the game return his/her
// evaluated score
if (score == 10)
return score;
// If Minimizer has won the game return his/her
// evaluated score
if (score == -10)
return score;
// If there are no more moves and no winner then
// it is a tie
if (isMovesLeft(board)==false)
return 0;
// If this maximizer's move
if (isMax)
{
int best = -1000;
// Traverse all cells
for (int i = 0; i<3; i++)
{
for (int j = 0; j<3; j++)
{
// Check if cell is empty
if (board[i][j]=='_')
{
// Make the move
board[i][j] = player;
// Call minimax recursively and choose
// the maximum value
best = max(best,
minimax(board, depth+1, !isMax));
// Undo the move
board[i][j] = '_';
}
}
}
return best;
}
// If this minimizer's move
else
{
int best = 1000;
// Traverse all cells
for (int i = 0; i<3; i++)
{
for (int j = 0; j<3; j++)
{
// Check if cell is empty
if (board[i][j]=='_')
{
// Make the move
board[i][j] = opponent;
// Call minimax recursively and choose
// the minimum value
best = min(best,
minimax(board, depth+1, !isMax));
// Undo the move
board[i][j] = '_';
}
}
}
return best;
}
}
Aber für connect4, wie berechne ich Auswertungsfunktion und wie wird es Terminal Fälle definieren (außer, wenn das Brett voll ist)?
Mit der Annahme, dass Sie den Suchraum nicht vollständig durchlaufen können (wie bei den meisten Spielen), ist es die Aufgabe Ihrer Bewertungsfunktion, diese Punktzahl irgendwie zu approximieren. Also die Score-Werte, wenn in einer Tiefe gestoppt wird, ist 1,0, -1 in End-States und etwas zwischen [1, -1], wenn nicht (nur durch Ihre Funktion berechnet). – sascha