public void TestLookupHand5_1() { Card card1 = new Card(Value.Ace, Suit.Spades); Card card2 = new Card(Value.Ace, Suit.Clubs); Card card3 = new Card(Value.Ace, Suit.Diamonds); Card card4 = new Card(Value.Five, Suit.Diamonds); Card card5 = new Card(Value.Five, Suit.Spades); Assert.AreEqual(28820, TwoPlusTwo.EvaluateCards(new int[] { card1.Number, card2.Number, card3.Number, card4.Number, card5.Number })); }
public void TestLookupHand5_2() { Card card1 = new Card(Value.Ace, Suit.Spades); Card card2 = new Card(Value.Ace, Suit.Clubs); Card card3 = new Card(Value.Ace, Suit.Diamonds); Card card4 = new Card(Value.Five, Suit.Diamonds); Card card5 = new Card(Value.Five, Suit.Spades); Hand hand = new Hand { card1, card2, card3, card4, card5 }; Assert.AreEqual(28820, TwoPlusTwo.EvaluateCards(hand)); }
public void EnumerateAllHands() { var handTypeSum = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var count = 0; Console.WriteLine("Enumerating and evaluating all 133,784,560 possible 7-card poker hands..."); var startTime = DateTime.Now; for (var c0 = 1; c0 < 47; c0++) { var u0 = TwoPlusTwo.EvalCard(53 + c0); for (var c1 = c0 + 1; c1 < 48; c1++) { var u1 = TwoPlusTwo.EvalCard(u0 + c1); for (var c2 = c1 + 1; c2 < 49; c2++) { var u2 = TwoPlusTwo.EvalCard(u1 + c2); for (var c3 = c2 + 1; c3 < 50; c3++) { var u3 = TwoPlusTwo.EvalCard(u2 + c3); for (var c4 = c3 + 1; c4 < 51; c4++) { var u4 = TwoPlusTwo.EvalCard(u3 + c4); for (var c5 = c4 + 1; c5 < 52; c5++) { var u5 = TwoPlusTwo.EvalCard(u4 + c5); for (var c6 = c5 + 1; c6 < 53; c6++) { handTypeSum[TwoPlusTwo.EvalCard(u5 + c6) >> 12]++; count++; } } } } } } } var endTime = DateTime.Now; Console.WriteLine("BAD: {0}", handTypeSum[0]); Console.WriteLine("High Card: {0}", handTypeSum[1]); Console.WriteLine("One Pair: {0}", handTypeSum[2]); Console.WriteLine("Two Pair: {0}", handTypeSum[3]); Console.WriteLine("Trips: {0}", handTypeSum[4]); Console.WriteLine("Straight: {0}", handTypeSum[5]); Console.WriteLine("Flush: {0}", handTypeSum[6]); Console.WriteLine("Full House: {0}", handTypeSum[7]); Console.WriteLine("Quads: {0}", handTypeSum[8]); Console.WriteLine("Straight Flush: {0}", handTypeSum[9]); var testCount = 0; for (var index = 0; index < 10; index++) { testCount += handTypeSum[index]; } Assert.IsTrue(testCount == count); Assert.IsTrue(count == 133784560); Assert.IsTrue(handTypeSum[0] == 0); Console.WriteLine(); Console.WriteLine("Enumerated " + count + " hands in " + (endTime - startTime) + " milliseconds!"); }
static void Main(string[] args) { bool control; do { Console.Clear(); int opponents; do { Console.Write("Number of opponents: "); } while (!int.TryParse(Console.ReadLine(), out opponents)); Console.WriteLine(); var hand = new Hand("Me", opponents); var boardHand = new Hand(); Card card; for (int i = 1; i <= 2; i++) { Console.WriteLine("Card {0}:", i); card = GetCard(); hand.Add(card); } Console.WriteLine(); Console.WriteLine("Flop:"); for (int i = 0; i < 3; i++) { card = GetCard(); hand.Add(card); boardHand.Add(card); } hand = TwoPlusTwo.Evaluate(hand, boardHand); Console.WriteLine(); PrintHandStrength(hand, opponents + 1); Console.WriteLine("Turn:"); card = GetCard(); hand.Add(card); boardHand.Add(card); hand = TwoPlusTwo.Evaluate(hand, boardHand); Console.WriteLine(); PrintHandStrength(hand, opponents + 1); Console.WriteLine("River:"); card = GetCard(); hand.Add(card); boardHand.Add(card); Console.WriteLine(); hand = TwoPlusTwo.Evaluate(hand, boardHand); PrintHandStrength(hand, opponents + 1); Console.WriteLine("Do you want to play again? "); if (Console.ReadLine() == "y") { control = true; } else { control = false; } } while (control); }