static void Main() { Console.OutputEncoding = System.Text.Encoding.UTF8; while (true) { Console.WriteLine("Welcome to Console Poker\n"); char[,] table = new char[tableHeight, tableWidth]; Dealer dealer = new Dealer(); IEvaluator evaluator = new TexasEvaluator(); List <Player> players = AddPlayers(); List <Card> cardsOnTable = new List <Card>(); RefreshTable(table, players, cardsOnTable); Wait(); dealer.Deal(players); EvaluateHands(players, cardsOnTable, evaluator); RefreshTable(table, players, cardsOnTable); Wait(); dealer.OpenFlop(cardsOnTable); EvaluateHands(players, cardsOnTable, evaluator); ProbabilityCalculator.Calculate(players, cardsOnTable, dealer.Deck); RefreshTable(table, players, cardsOnTable); Wait(); dealer.OpenTurnOrRiver(cardsOnTable); EvaluateHands(players, cardsOnTable, evaluator); ProbabilityCalculator.Calculate(players, cardsOnTable, dealer.Deck); RefreshTable(table, players, cardsOnTable); Wait(); dealer.OpenTurnOrRiver(cardsOnTable); EvaluateHands(players, cardsOnTable, evaluator); ProbabilityCalculator.Calculate(players, cardsOnTable, dealer.Deck); RefreshTable(table, players, cardsOnTable); DisplayWinner(players); Wait(); Console.Clear(); } }
public static void Calculate(List <Player> players, List <Card> tableCards, List <Card> remainingDeck) { IEvaluator eval = new TexasEvaluator(); List <Player> testPlayers = new List <Player>(); foreach (var player in players) { Player newPlayer = new Player(player.Name); newPlayer.Hand.Add(player.Hand[0]); newPlayer.Hand.Add(player.Hand[1]); testPlayers.Add(newPlayer); } Dictionary <string, int> playerWins = new Dictionary <string, int>(); Dictionary <string, int> playerDraws = new Dictionary <string, int>(); InitializeDicts(testPlayers, playerWins, playerDraws); int trials = 0; List <Card> testTableCards = new List <Card>(tableCards); List <Card> testRemainingDeck = new List <Card>(remainingDeck); if (testTableCards.Count == 3) { TestForFlop(eval, testPlayers, playerWins, playerDraws, ref trials, testTableCards, testRemainingDeck, players); } else if (testTableCards.Count == 4) { TestForTurn(eval, testPlayers, playerWins, playerDraws, ref trials, testTableCards, testRemainingDeck); } else if (testTableCards.Count == 5) { TestForRiver(eval, testPlayers, playerWins, playerDraws, ref trials, testTableCards); } SetProbability(players, playerWins, playerDraws, trials); }