public Odds CalculateOdds(PokerHand SharedCards) { List <HoldemHand> PossibleHandsOfOpponent = new List <HoldemHand>(); PokerHand BestPokerHand = new PokerHand(); PokerHand[] BestPokerHandArray = new PokerHand[990]; int NumWins = 0, NumDraws = 0, NumLoses = 0; double ChancesOfWinning = 0.0, ChancesOfLosing = 0.0, ChancesOfDrawing = 0.0; int ResultOfComparison; for (int i = 0; i < 990; ++i) { BestPokerHandArray[i] = new PokerHand(); } Deck.Remove(SharedCards.Hand[0]); Deck.Remove(SharedCards.Hand[1]); Deck.Remove(SharedCards.Hand[2]); Deck.Remove(SharedCards.Hand[3]); Deck.Remove(SharedCards.Hand[4]); Deck.Remove(Hand[0]); Deck.Remove(Hand[1]); for (int i = 0; i < 45; ++i) { for (int j = i + 1; j < 45; ++j) { HoldemHand TmpHoldemHand = new HoldemHand(); TmpHoldemHand.Hand[0] = Deck.ElementAt(i); TmpHoldemHand.Hand[1] = Deck.ElementAt(j); PossibleHandsOfOpponent.Insert(0, TmpHoldemHand); } } BestPokerHand = FindBestPokerHand(SharedCards); for (int i = 0; i < 990; ++i) { BestPokerHandArray[i] = PossibleHandsOfOpponent.ElementAt(i).FindBestPokerHand(SharedCards); } for (int i = 0; i < 990; ++i) { ResultOfComparison = BestPokerHand.CompareTo(BestPokerHandArray[i]); if (ResultOfComparison == 1) { ++NumWins; } else if (ResultOfComparison == -1) { ++NumLoses; } else { ++NumDraws; } } Deck.Insert(0, SharedCards.Hand[0]); Deck.Insert(0, SharedCards.Hand[1]); Deck.Insert(0, SharedCards.Hand[2]); Deck.Insert(0, SharedCards.Hand[3]); Deck.Insert(0, SharedCards.Hand[4]); Deck.Insert(0, Hand[0]); Deck.Insert(0, Hand[1]); ChancesOfWinning = (NumWins / 990.0) * 100.0; ChancesOfLosing = (NumLoses / 990.0) * 100.0; ChancesOfDrawing = (NumDraws / 990.0) * 100.0; return(new Odds(ChancesOfWinning, ChancesOfLosing, ChancesOfDrawing)); }
public PokerHand FindBestPokerHand(PokerHand SharedCards) { PokerHand[] PokerHandArray = new PokerHand[21]; for (int k = 0; k < 21; ++k) { PokerHandArray[k] = new PokerHand(); } PokerHandArray[0].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[0].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[0].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[0].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[0].Hand[2].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[0].Hand[2].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[0].Hand[3].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[0].Hand[3].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[0].Hand[4].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[0].Hand[4].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[1].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[1].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[1].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[1].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[1].Hand[2].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[1].Hand[2].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[1].Hand[3].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[1].Hand[3].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[1].Hand[4].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[1].Hand[4].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[2].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[2].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[2].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[2].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[2].Hand[2].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[2].Hand[2].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[2].Hand[3].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[2].Hand[3].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[2].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[2].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[3].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[3].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[3].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[3].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[3].Hand[2].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[3].Hand[2].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[3].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[3].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[3].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[3].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[4].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[4].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[4].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[4].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[4].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[4].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[4].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[4].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[4].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[4].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[5].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[5].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[5].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[5].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[5].Hand[2].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[5].Hand[2].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[5].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[5].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[5].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[5].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[6].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[6].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[6].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[6].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[6].Hand[2].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[6].Hand[2].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[6].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[6].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[6].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[6].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[7].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[7].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[7].Hand[1].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[7].Hand[1].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[7].Hand[2].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[7].Hand[2].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[7].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[7].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[7].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[7].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[8].Hand[0].CardRank = Hand[1].CardRank; PokerHandArray[8].Hand[0].CardSuit = Hand[1].CardSuit; PokerHandArray[8].Hand[1].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[8].Hand[1].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[8].Hand[2].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[8].Hand[2].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[8].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[8].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[8].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[8].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[9].Hand[0].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[9].Hand[0].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[9].Hand[1].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[9].Hand[1].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[9].Hand[2].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[9].Hand[2].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[9].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[9].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[9].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[9].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[10].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[10].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[10].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[10].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[10].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[10].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[10].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[10].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[10].Hand[4].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[10].Hand[4].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[11].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[11].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[11].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[11].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[11].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[11].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[11].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[11].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[11].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[11].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[12].Hand[0].CardRank = Hand[1].CardRank; PokerHandArray[12].Hand[0].CardSuit = Hand[1].CardSuit; PokerHandArray[12].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[12].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[12].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[12].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[12].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[12].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[12].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[12].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[13].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[13].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[13].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[13].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[13].Hand[2].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[13].Hand[2].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[13].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[13].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[13].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[13].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[14].Hand[0].CardRank = Hand[1].CardRank; PokerHandArray[14].Hand[0].CardSuit = Hand[1].CardSuit; PokerHandArray[14].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[14].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[14].Hand[2].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[14].Hand[2].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[14].Hand[3].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[14].Hand[3].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[14].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[14].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[15].Hand[0].CardRank = Hand[1].CardRank; PokerHandArray[15].Hand[0].CardSuit = Hand[1].CardSuit; PokerHandArray[15].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[15].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[15].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[15].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[15].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[15].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[15].Hand[4].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[15].Hand[4].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[16].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[16].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[16].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[16].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[16].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[16].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[16].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[16].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[16].Hand[4].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[16].Hand[4].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[17].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[17].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[17].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[17].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[17].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[17].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[17].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[17].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[17].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[17].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[18].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[18].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[18].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[18].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[18].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[18].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[18].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[18].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[18].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[18].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; PokerHandArray[19].Hand[0].CardRank = Hand[0].CardRank; PokerHandArray[19].Hand[0].CardSuit = Hand[0].CardSuit; PokerHandArray[19].Hand[1].CardRank = Hand[1].CardRank; PokerHandArray[19].Hand[1].CardSuit = Hand[1].CardSuit; PokerHandArray[19].Hand[2].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[19].Hand[2].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[19].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[19].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[19].Hand[4].CardRank = SharedCards.Hand[3].CardRank; PokerHandArray[19].Hand[4].CardSuit = SharedCards.Hand[3].CardSuit; PokerHandArray[20].Hand[0].CardRank = Hand[1].CardRank; PokerHandArray[20].Hand[0].CardSuit = Hand[1].CardSuit; PokerHandArray[20].Hand[1].CardRank = SharedCards.Hand[0].CardRank; PokerHandArray[20].Hand[1].CardSuit = SharedCards.Hand[0].CardSuit; PokerHandArray[20].Hand[2].CardRank = SharedCards.Hand[1].CardRank; PokerHandArray[20].Hand[2].CardSuit = SharedCards.Hand[1].CardSuit; PokerHandArray[20].Hand[3].CardRank = SharedCards.Hand[2].CardRank; PokerHandArray[20].Hand[3].CardSuit = SharedCards.Hand[2].CardSuit; PokerHandArray[20].Hand[4].CardRank = SharedCards.Hand[4].CardRank; PokerHandArray[20].Hand[4].CardSuit = SharedCards.Hand[4].CardSuit; int ReturnValue, i = 0, j = 1; bool BestHandIsFound = false; while (!BestHandIsFound) { ReturnValue = PokerHandArray[i].CompareTo(PokerHandArray[j]); if (ReturnValue == -1) { j = 0; ++i; continue; } else if (ReturnValue > -1 && j == 20) { BestHandIsFound = true; } else { ++j; } } return(PokerHandArray[i]); }