Guest User

MiniMax C++

a guest
Dec 24th, 2022
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. int MiniMax(int Board[3][3], int depth, bool isMaximizing)
  2. {
  3.     //Check if anybody won
  4.     checkkWinner(Board);
  5.     if (Winner == 1)
  6.     {
  7.         return MoveValues[1];
  8.     }
  9.     else if (Winner == 2)
  10.     {
  11.         return MoveValues[0];
  12.     }
  13.     else if (AvailableSpots == 0)
  14.     {
  15.         return MoveValues[2];
  16.     }
  17.  
  18.     if (isMaximizing == true)
  19.     {
  20.         int bestScore = INT_MIN;
  21.         for(int i = 0; i < 3; i++)
  22.         {
  23.             for(int j = 0; j < 3; j++)
  24.             {
  25.                 if(Board[i][j] == 0)
  26.                 {
  27.                     Board[i][j] = 2;
  28.                     int score = MiniMax(Board, depth + 1, false);
  29.                     Board[i][j] = 0;
  30.                     bestScore = max(score,bestScore);
  31.                 }
  32.             }
  33.         }
  34.         return bestScore;
  35.     }
  36.     else
  37.     {
  38.         int bestScore = INT_MAX;
  39.         for(int i = 0; i < 3; i++)
  40.         {
  41.             for(int j = 0; j < 3; j++)
  42.             {
  43.                 if(Board[i][j] == 0)
  44.                 {
  45.                     Board[i][j] = 1;
  46.                     int score = MiniMax(Board, depth + 1, true);
  47.                     Board[i][j] = 0;
  48.                     bestScore = min(score,bestScore);
  49.                 }
  50.             }
  51.         }
  52.         return bestScore;
  53.     }
  54. }
  55.  
  56. void BotF::BestMove()
  57. {
  58.     int bestScore = INT_MIN;
  59.     for (int i = 0; i < 3; i++)
  60.     {
  61.         for (int j = 0; j < 3; j++)
  62.         {
  63.             if (Map[i][j] == 0)
  64.             {
  65.                 Map[i][j] = 2;
  66.                 int score = MiniMax(Map, 0, false);
  67.                 Map[i][j] = 0;
  68.                 if (score > bestScore)
  69.                 {
  70.                     bestScore = score;
  71.                     I = i;
  72.                     J = j;
  73.                 }
  74.             }
  75.         }
  76.     }
  77.     Map[I][J] = 2;
  78.     DrawMap[I][J] = Opponent;
  79.     Winner = -1;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment