Minimax Algorithm in Game Theory - Set 2 (Introduction To Evaluation Function)
Minimax Algorithm in Game Theory - Set 2 (Introduction To Evaluation Function)
3. If no one has won or the game results in a draw then we give a value of +0.
We could have chosen any positive / negative value other than 10. For the sake of simplicity we chose 10
for the sake of simplicity we shall use lower case ‘x’ and lower case ‘o’ to represent the players and an
underscore ‘_’ to represent a blank space on the board.
If we represent our board as a 3×3 2D character matrix, like char board[3][3]; then we have to check each
row, each column and the diagonals to check if either of the players have gotten 3 in a row.
// C++ program to compute evaluation function for
// Tic Tac Toe Game.
#include<stdio.h>
#include<algorithm>
using namespace std;
// Returns a value based on who is winning
// b[3][3] is the Tic-Tac-Toe board
int evaluate(char b[3][3])
{
// Checking for Rows for X or O victory.
for (int row = 0; row<3; row++)
{
if (b[row][0]==b[row][1] && b[row][1]==b[row][2])
{
if (b[row][0]=='x')
return +10;
else if (b[row][0]=='o')
return -10;
}
}
// Checking for Columns for X or O victory.
for (int col = 0; col<3; col++)
{
if (b[0][col]==b[1][col] && b[1][col]==b[2][col])
{
if (b[0][col]=='x')
return +10;
else if (b[0][col]=='o')
return -10;
}
}
// Checking for Diagonals for X or O victory.
if (b[0][0]==b[1][1] && b[1][1]==b[2][2])
{
if (b[0][0]=='x')
return +10;
else if (b[0][0]=='o')
return -10;
}
if (b[0][2]==b[1][1] && b[1][1]==b[2][0])
{
if (b[0][2]=='x')
return +10;
else if (b[0][2]=='o')
return -10;
}
// Else if none of them have won then return 0
return 0;
}
// Driver code
int main()
{
char board[3][3] =
{
{ 'x', '_', 'o'},
{ '_', 'x', 'o'},
{ '_', '_', 'x'}
};
int value = evaluate(board);
printf("The value of this board is %d\n", value);
return 0;
}
Run on IDE
Output :
The value of this board is 10
The idea of this article is to understand how to write a simple evaluation function for the game Tic-Tac-
Toe. In the next article we shall see how to combine this evaluation function with the minimax function.
Stay Tuned.