public Match(TicTacToePlayer p1, TicTacToePlayer p2, BST <GameState> tree) { player1Wins = 0; player2Wins = 0; draws = 0; player1 = p1; player2 = p2; stateTree = tree; }
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()); }
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); } }