Example #1
0
        public void PlayAGame()
        {
            TicTacToeBot ai = new TicTacToeBot();
            TicTacToeBoard board = new TicTacToeBoard();
            Random rng = new Random();
            bool yourTurn;
            Console.WriteLine("Randomizing who starts...");
            if (rng.Next(2) == 0)
            {
                Console.WriteLine("You start!");
                yourTurn = true;
            }
            else
            {
                Console.WriteLine("AI starts.");
                yourTurn = false;
            }

            int winner = 0;
            bool draw = false;
            while (winner == 0 && !draw)
            {
                if (yourTurn)
                {
                    TakeATurn(board);
                }
                else
                {
                    board.MakeMove(ai.GetBestMove(board), 1);
                }
                yourTurn = !yourTurn;
                winner = board.CheckForWin();
                draw = board.CheckForDraw();
            }
            board.DisplayBoard();
            if (winner == 1)
            {
                Console.WriteLine("AI wins.");
            }
            else if (winner == 2)
            {
                Console.WriteLine("You win!");
            }
            else
            {
                Console.WriteLine("Draw game.");
            }
        }
Example #2
0
 public double AlphaBeta(TicTacToeBoard oldBoard, double alpha, double beta, int player)
 {
     if (oldBoard.CheckForWin() != 0 || oldBoard.CheckForDraw())
     {
         return Score(oldBoard);
     }
     if (player == 1)
     {
         double val = -10000.0;
         for (int i = 1; i <= 9; i++)
         {
             if (oldBoard.GetMove(i) == 0)
             {
                 TicTacToeBoard newBoard = new TicTacToeBoard(oldBoard);
                 newBoard.MakeMove(i, player);
                 val = Math.Max(val, gamma * AlphaBeta(newBoard, alpha, beta, 2));
                 alpha = Math.Max(alpha, val);
                 if (beta <= alpha) break;
             }
         }
         return alpha;
     }
     else
     {
         double val = 10000.0;
         for (int i = 1; i <= 9; i++)
         {
             if (oldBoard.GetMove(i) == 0)
             {
                 TicTacToeBoard newBoard = new TicTacToeBoard(oldBoard);
                 newBoard.MakeMove(i, player);
                 val = Math.Min(val, gamma * AlphaBeta(newBoard, alpha, beta, 1));
                 beta = Math.Min(val, beta);
                 if (beta <= alpha) break;
             }
         }
         return beta;
     }
 }