예제 #1
0
 public Match(TicTacToePlayer p1, TicTacToePlayer p2, BST <GameState> tree)
 {
     player1Wins = 0;
     player2Wins = 0;
     draws       = 0;
     player1     = p1;
     player2     = p2;
     stateTree   = tree;
 }
예제 #2
0
        public void OutputGame(Game currentGame, TicTacToePlayer playerX, TicTacToePlayer playerO, TicTacToeState state, short num)
        {
            BSTNode <GameState> currentNode = stateTree.Find(currentGame.GetStateId());

            Console.WriteLine("Player 1 (" + player1.PlayerState + ") Wins: " + player1Wins);
            Console.WriteLine("Player 2 (" + player2.PlayerState + ") Wins: " + player2Wins);
            Console.WriteLine("Draws: " + draws);
            if (currentNode != stateTree.NullNode)
            {
                GameState currentGameState = currentNode.Value;
                Console.WriteLine("Player " + playerX.PlayerNum + " win probability: " + currentGameState.WinProbability1 + "%");
                Console.WriteLine("Player " + playerO.PlayerNum + " win probability: " + currentGameState.WinProbability2 + "%");
            }
            Console.WriteLine(state + "(Player " + num + ")'s Move");
            Console.Write(currentGame.GameBoard.RenderAsString());
        }
예제 #3
0
        public void RunGame(TicTacToePlayer playerX, TicTacToePlayer playerO)
        {
            TicTacToeGame   currentGame   = new TicTacToeGame(TicTacToeState.X);
            short           winningPlayer = 0;
            TicTacToePlayer currentPlayer = playerX;

            OutputGame(currentGame, playerX, playerO, TicTacToeState.X, playerX.PlayerNum);
            while (true)
            {
                currentPlayer.MakeMove(currentGame);
                OutputGame(currentGame, playerX, playerO, currentPlayer.PlayerState, currentPlayer.PlayerNum);
                if (currentGame.CheckForWin())
                {
                    winningPlayer = currentPlayer.PlayerNum;
                    break;
                }
                else if (currentGame.CheckForDraw())
                {
                    break;
                }
                currentPlayer = currentPlayer == playerX ? playerO : playerX;
            }
            if (winningPlayer == 1)
            {
                player1Wins++;
                Console.WriteLine("Player 1 wins!");
                player1.EndGame(1);
                player2.EndGame(-1);
            }
            else if (winningPlayer == 2)
            {
                player2Wins++;
                Console.WriteLine("Player 2 wins!");
                player1.EndGame(-1);
                player2.EndGame(1);
            }
            else
            {
                draws++;
                Console.WriteLine("It's a tie!");
                player1.EndGame(0);
                player2.EndGame(0);
            }
        }