Пример #1
0
 public LowTriRankTexture(TurnBoard board)
 {
     FlopBoard = board.FlopBoard;
     if (FlopBoard.RankTexture == FlopBoardRankTextureEnum.ThreeSome)
     {
         SingleCard = board.TurnCard;
         if (FlopBoard.Flop1.Rank >= SingleCard.Rank)
         {
             throw new InvalidOperationException();
         }
         TriCard1 = FlopBoard.Flop1;
         TriCard2 = FlopBoard.Flop2;
         TriCard3 = FlopBoard.Flop3;
     }
     else if (FlopBoard.RankTexture == FlopBoardRankTextureEnum.LowPair)
     {
         var cards = new List <Card>()
         {
             FlopBoard.Flop1, FlopBoard.Flop2, FlopBoard.Flop3, board.TurnCard
         };
         cards.Sort();
         if (!(cards[0].Rank == cards[1].Rank && cards[1].Rank == cards[2].Rank))
         {
             throw new InvalidOperationException();
         }
         SingleCard = cards[3];
         TriCard1   = cards[0];
         TriCard2   = cards[1];
         TriCard3   = cards[2];
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
Пример #2
0
        public SinglesRankTexture(TurnBoard board)
        {
            FlopBoard = board.FlopBoard;
            if (board.FlopBoard.RankTexture != FlopBoardRankTextureEnum.Singles)
            {
                throw new InvalidOperationException();
            }

            if (board.TurnCard.Rank == FlopBoard.Flop1.Rank ||
                board.TurnCard.Rank == FlopBoard.Flop2.Rank ||
                board.TurnCard.Rank == FlopBoard.Flop3.Rank)
            {
                throw new InvalidOperationException();
            }

            var cards = new List <Card>()
            {
                FlopBoard.Flop1, FlopBoard.Flop2, FlopBoard.Flop3, board.TurnCard
            };

            cards.Sort();
            cards.Reverse();
            HighCard   = cards[0];
            SecondCard = cards[1];
            ThirdCard  = cards[2];
            LowCard    = cards[3];
        }
Пример #3
0
        public SinglesRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            if (TurnBoard.RankTexture != TurnBoardRankTextureEnum.Singles)
            {
                throw new InvalidOperationException();
            }

            var singlesTexture = new Turn.TurnBoardRankTextures.SinglesRankTexture(TurnBoard);

            if (board.River.Rank == singlesTexture.HighCard.Rank ||
                board.River.Rank == singlesTexture.SecondCard.Rank ||
                board.River.Rank == singlesTexture.ThirdCard.Rank ||
                board.River.Rank == singlesTexture.LowCard.Rank)
            {
                throw new InvalidOperationException();
            }

            var cards = new List <Card>()
            {
                board.River, singlesTexture.HighCard, singlesTexture.SecondCard, singlesTexture.ThirdCard, singlesTexture.LowCard
            };

            cards.Sort();
            HighCard   = cards[4];
            SecondCard = cards[3];
            ThirdCard  = cards[2];
            FourthCard = cards[1];
            LowCard    = cards[0];
        }
Пример #4
0
        public SuitedTwoTexture(TurnBoard turnBoard)
        {
            var cards = new List <Card>()
            {
                turnBoard.FlopBoard.Flop1, turnBoard.FlopBoard.Flop2, turnBoard.FlopBoard.Flop3, turnBoard.TurnCard
            };

            if (cards.Count(c => c.Suit == SuitEnum.Heart) == 2)
            {
                SuitedSuit = SuitEnum.Heart;
            }
            if (cards.Count(c => c.Suit == SuitEnum.Spade) == 2)
            {
                SuitedSuit = SuitEnum.Spade;
            }
            if (cards.Count(c => c.Suit == SuitEnum.Diamond) == 2)
            {
                SuitedSuit = SuitEnum.Diamond;
            }
            if (cards.Count(c => c.Suit == SuitEnum.Club) == 2)
            {
                SuitedSuit = SuitEnum.Club;
            }

            SuitedRanks = cards.Where(c => c.Suit == SuitedSuit).Select(c => c.Rank).ToList();
        }
Пример #5
0
 public SuitedThreeTexture(TurnBoard turnBoard)
 {
     if (turnBoard.FlopBoard.SuitTexture == FlopBoardSuitTextureEnum.SuitedThree)
     {
         SuitedSuit  = turnBoard.FlopBoard.Flop1.Suit;
         SuitedRanks = new List <RankEnum>()
         {
             turnBoard.FlopBoard.Flop1.Rank, turnBoard.FlopBoard.Flop2.Rank, turnBoard.FlopBoard.Flop3.Rank
         };
     }
     else if (turnBoard.FlopBoard.SuitTexture == FlopBoardSuitTextureEnum.SuitedTwo)
     {
         SuitedSuit  = turnBoard.TurnCard.Suit;
         SuitedRanks = new List <RankEnum>();
         SuitedRanks.Add(turnBoard.TurnCard.Rank);
         if (turnBoard.FlopBoard.Flop1.Suit == SuitedSuit)
         {
             SuitedRanks.Add(turnBoard.FlopBoard.Flop1.Rank);
         }
         if (turnBoard.FlopBoard.Flop2.Suit == SuitedSuit)
         {
             SuitedRanks.Add(turnBoard.FlopBoard.Flop2.Rank);
         }
         if (turnBoard.FlopBoard.Flop3.Suit == SuitedSuit)
         {
             SuitedRanks.Add(turnBoard.FlopBoard.Flop3.Rank);
         }
         if (SuitedRanks.Count != 3)
         {
             throw new InvalidOperationException();
         }
     }
 }
Пример #6
0
 public TwoPairsRankTexture(TurnBoard turnBoard)
 {
     FlopBoard = turnBoard.FlopBoard;
     if (FlopBoard.RankTexture == FlopBoardRankTextureEnum.HighPair)
     {
         var highPairBoard = new Flop.FlopBoardRankTextures.HighPairRankTexture(FlopBoard);
         if (highPairBoard.SingleCard.Rank != turnBoard.TurnCard.Rank)
         {
             throw new InvalidOperationException();
         }
         HighPairCard1 = highPairBoard.PairCard1;
         HighPairCard2 = highPairBoard.PairCard2;
         LowPairCard1  = highPairBoard.SingleCard;
         LowPairCard2  = turnBoard.TurnCard;
     }
     else if (FlopBoard.RankTexture == FlopBoardRankTextureEnum.LowPair)
     {
         var lowPairBoard = new Flop.FlopBoardRankTextures.LowPairRankTexture(FlopBoard);
         if (lowPairBoard.SingleCard.Rank != turnBoard.TurnCard.Rank)
         {
             throw new InvalidOperationException();
         }
         HighPairCard1 = lowPairBoard.SingleCard;
         HighPairCard2 = turnBoard.TurnCard;
         LowPairCard1  = lowPairBoard.PairCard1;
         LowPairCard2  = lowPairBoard.PairCard2;
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
Пример #7
0
        public HighTriLowPairRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.HighTri:
                var highTriTexture = new Turn.TurnBoardRankTextures.HighTriRankTexture(TurnBoard);
                TriCard1 = highTriTexture.TriCard1;
                TriCard2 = highTriTexture.TriCard2;
                TriCard3 = highTriTexture.TriCard3;
                if (highTriTexture.SingleCard.Rank != board.River.Rank)
                {
                    throw new InvalidOperationException();
                }
                PairCard1 = highTriTexture.SingleCard;
                PairCard2 = board.River;
                break;

            case TurnBoardRankTextureEnum.TwoPairs:
                var twoPairsTexture = new TwoPairsRankTexture(TurnBoard);
                if (twoPairsTexture.HighPairCard1.Rank != board.River.Rank)
                {
                    throw new InvalidOperationException();
                }
                TriCard1  = twoPairsTexture.HighPairCard1;
                TriCard2  = twoPairsTexture.HighPairCard2;
                TriCard3  = board.River;
                PairCard1 = twoPairsTexture.LowPairCard1;
                PairCard2 = twoPairsTexture.LowPairCard2;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Пример #8
0
        public SuitedTwoPairsTexture(TurnBoard turnBoard)
        {
            if (turnBoard.FlopBoard.SuitTexture == FlopBoardSuitTextureEnum.SuitedTwo)
            {
                Suit1Ranks  = new List <RankEnum>();
                Suit2Ranks  = new List <RankEnum>();
                SuitedSuit1 = turnBoard.TurnCard.Suit;
                Suit1Ranks.Add(turnBoard.TurnCard.Rank);

                if (turnBoard.FlopBoard.Flop1.Suit != SuitedSuit1)
                {
                    SuitedSuit2 = turnBoard.FlopBoard.Flop1.Suit;
                }
                else if (turnBoard.FlopBoard.Flop2.Suit != SuitedSuit1)
                {
                    SuitedSuit2 = turnBoard.FlopBoard.Flop2.Suit;
                }
                else if (turnBoard.FlopBoard.Flop3.Suit != SuitedSuit1)
                {
                    SuitedSuit2 = turnBoard.FlopBoard.Flop3.Suit;
                }
                else
                {
                    throw new InvalidOperationException();
                }

                if (turnBoard.FlopBoard.Flop1.Suit == SuitedSuit1)
                {
                    Suit1Ranks.Add(turnBoard.FlopBoard.Flop1.Rank);
                }
                else
                {
                    Suit2Ranks.Add(turnBoard.FlopBoard.Flop1.Rank);
                }

                if (turnBoard.FlopBoard.Flop2.Suit == SuitedSuit1)
                {
                    Suit1Ranks.Add(turnBoard.FlopBoard.Flop2.Rank);
                }
                else
                {
                    Suit2Ranks.Add(turnBoard.FlopBoard.Flop2.Rank);
                }

                if (turnBoard.FlopBoard.Flop3.Suit == SuitedSuit1)
                {
                    Suit1Ranks.Add(turnBoard.FlopBoard.Flop3.Rank);
                }
                else
                {
                    Suit2Ranks.Add(turnBoard.FlopBoard.Flop3.Rank);
                }
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
Пример #9
0
        public ThirdPairRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.MiddlePair:
                var middlePairTexture = new MiddlePairRankTexture(TurnBoard);
                if (board.River.Rank <= middlePairTexture.PairCard1.Rank ||
                    board.River.Rank == middlePairTexture.HighCard.Rank)
                {
                    throw new InvalidOperationException();
                }
                if (board.River.Rank > middlePairTexture.HighCard.Rank)
                {
                    HighCard   = board.River;
                    SecondCard = middlePairTexture.HighCard;
                }
                else
                {
                    HighCard   = middlePairTexture.HighCard;
                    SecondCard = board.River;
                }
                PairedCard1 = middlePairTexture.PairCard1;
                PairedCard2 = middlePairTexture.PairCard2;
                LowCard     = middlePairTexture.LowCard;
                break;

            case TurnBoardRankTextureEnum.LowPair:
                var lowPairTexture = new Turn.TurnBoardRankTextures.LowPairRankTexture(TurnBoard);
                if (board.River.Rank >= lowPairTexture.PairCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard    = lowPairTexture.HighCard;
                SecondCard  = lowPairTexture.MiddleCard;
                PairedCard1 = lowPairTexture.PairCard1;
                PairedCard2 = lowPairTexture.PairCard2;
                LowCard     = board.River;
                break;

            case TurnBoardRankTextureEnum.Singles:
                var singlesTexture = new Turn.TurnBoardRankTextures.SinglesRankTexture(TurnBoard);
                if (board.River.Rank != singlesTexture.ThirdCard.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard    = singlesTexture.HighCard;
                SecondCard  = singlesTexture.SecondCard;
                PairedCard1 = singlesTexture.ThirdCard;
                PairedCard2 = board.River;
                LowCard     = singlesTexture.LowCard;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
        public TurnMultiwayCallingStrategy(TurnBoard turnBoard, HoldingHoles heroHoles)
        {
            _turnBoard  = turnBoard;
            _turnFolder = new TurnFolder();
            var fiveCardsEnumerator = new TurnFiveCardsEnumerator(turnBoard, heroHoles);

            _probabilityCalculator = new VillainProbabilityCalculator(
                grid => _turnFolder.ShouldAGridFoldToBoardByRank(grid, _turnBoard),
                grid => _turnFolder.ShouldAGridFoldToBoardBySuit(grid, _turnBoard, heroHoles),
                fiveCardsEnumerator.Enumerate);
        }
Пример #11
0
        public HighPairRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.HighPair:
                var highPairTexture = new Turn.TurnBoardRankTextures.HighPairRankTexture(TurnBoard);
                if (board.River.Rank >= highPairTexture.PairCard1.Rank)
                {
                    throw new InvalidOperationException();
                }

                if (board.River.Rank == highPairTexture.MiddleCard.Rank ||
                    board.River.Rank == highPairTexture.LowCard.Rank)
                {
                    throw new InvalidOperationException();
                }

                PairedCard1 = highPairTexture.PairCard1;
                PairedCard2 = highPairTexture.PairCard2;

                var singles = new List <Card>()
                {
                    highPairTexture.MiddleCard, highPairTexture.LowCard, board.River
                };
                singles.Sort();
                LowCard    = singles[0];
                ThirdCard  = singles[1];
                SecondCard = singles[2];
                break;

            case TurnBoardRankTextureEnum.Singles:
                var singlesPairTexture = new Turn.TurnBoardRankTextures.SinglesRankTexture(TurnBoard);
                if (board.River.Rank != singlesPairTexture.HighCard.Rank)
                {
                    throw new InvalidOperationException();
                }

                PairedCard1 = singlesPairTexture.HighCard;
                PairedCard2 = board.River;
                SecondCard  = singlesPairTexture.SecondCard;
                ThirdCard   = singlesPairTexture.ThirdCard;
                LowCard     = singlesPairTexture.LowCard;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
        public HighLowTwoPairsRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.HighPair:
                var highPairTexture = new Turn.TurnBoardRankTextures.HighPairRankTexture(TurnBoard);
                if (board.River.Rank != highPairTexture.LowCard.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighPairCard1 = highPairTexture.PairCard1;
                HighPairCard2 = highPairTexture.PairCard2;
                MiddleCard    = highPairTexture.MiddleCard;
                LowPairCard1  = highPairTexture.LowCard;
                LowPairCard2  = board.River;
                break;

            case TurnBoardRankTextureEnum.LowPair:
                var lowPairTexture = new Turn.TurnBoardRankTextures.LowPairRankTexture(TurnBoard);
                if (board.River.Rank != lowPairTexture.HighCard.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighPairCard1 = lowPairTexture.HighCard;
                HighPairCard2 = board.River;
                MiddleCard    = lowPairTexture.MiddleCard;
                LowPairCard1  = lowPairTexture.PairCard1;
                LowPairCard2  = lowPairTexture.PairCard2;
                break;

            case TurnBoardRankTextureEnum.TwoPairs:
                var twoPairsTexture = new TwoPairsRankTexture(TurnBoard);
                if (board.River.Rank >= twoPairsTexture.HighPairCard1.Rank ||
                    board.River.Rank <= twoPairsTexture.LowPairCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighPairCard1 = twoPairsTexture.HighPairCard1;
                HighPairCard2 = twoPairsTexture.HighPairCard2;
                MiddleCard    = board.River;
                LowPairCard1  = twoPairsTexture.LowPairCard1;
                LowPairCard2  = twoPairsTexture.LowPairCard2;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Пример #13
0
        public MiddleTriRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.HighTri:
                var highTriTexture = new Turn.TurnBoardRankTextures.HighTriRankTexture(TurnBoard);
                if (board.River.Rank <= highTriTexture.TriCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard = board.River;
                TriCard1 = highTriTexture.TriCard1;
                TriCard2 = highTriTexture.TriCard2;
                TriCard3 = highTriTexture.TriCard3;
                LowCard  = highTriTexture.SingleCard;
                break;

            case TurnBoardRankTextureEnum.LowTri:
                var lowTriTexture = new Turn.TurnBoardRankTextures.LowTriRankTexture(TurnBoard);
                if (board.River.Rank >= lowTriTexture.TriCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard = lowTriTexture.SingleCard;
                TriCard1 = lowTriTexture.TriCard1;
                TriCard2 = lowTriTexture.TriCard2;
                TriCard3 = lowTriTexture.TriCard3;
                LowCard  = board.River;
                break;

            case TurnBoardRankTextureEnum.MiddlePair:
                var middlePairTexture = new MiddlePairRankTexture(TurnBoard);
                if (board.River.Rank != middlePairTexture.PairCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard = middlePairTexture.HighCard;
                TriCard1 = middlePairTexture.PairCard1;
                TriCard2 = middlePairTexture.PairCard2;
                TriCard3 = board.River;
                LowCard  = middlePairTexture.LowCard;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Пример #14
0
        public SuitedFourTexture(TurnBoard turnBoard)
        {
            if (turnBoard.SuitTexture != TurnBoardSuitTextureEnum.SuitedFour)
            {
                throw new InvalidOperationException();
            }

            SuitedSuit = turnBoard.TurnCard.Suit;
            Ranks      = new List <RankEnum>()
            {
                turnBoard.FlopBoard.Flop1.Rank,
                turnBoard.FlopBoard.Flop2.Rank,
                turnBoard.FlopBoard.Flop3.Rank,
                turnBoard.TurnCard.Rank
            };
        }
Пример #15
0
        private Func <Card, Card, Tuple <SuitHandGradeEnum, int> > GetTurnGridGrader(TurnBoard turnBoard)
        {
            switch (turnBoard.SuitTexture)
            {
            case TurnBoardSuitTextureEnum.SuitedFour:
                return((c1, c2) =>
                {
                    var tuple = new Turn.TurnBoardSuitTextures.SuitedFourTexture(turnBoard).TestGridAgainstTurnBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            case TurnBoardSuitTextureEnum.SuitedThree:
                return((c1, c2) =>
                {
                    var tuple = new SuitedThreeTexture(turnBoard).TestGridAgainstTurnBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            case TurnBoardSuitTextureEnum.SuitedTwoPairs:
                return((c1, c2) =>
                {
                    var tuple = new SuitedTwoPairsTexture(turnBoard).TestGridAgainstTurnBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            case TurnBoardSuitTextureEnum.SuitedTwo:
                return((c1, c2) =>
                {
                    var tuple = new SuitedTwoTexture(turnBoard).TestGridAgainstTurnBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            case TurnBoardSuitTextureEnum.Offsuit:
                return((c1, c2) =>
                {
                    var tuple = new OffsuitTexture(turnBoard).TestGridAgainstTurnBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            default:
                throw new InvalidOperationException();
            }
        }
Пример #16
0
        public FoursomeRankTexture(TurnBoard board)
        {
            if (board.FlopBoard.RankTexture != FlopBoardRankTextureEnum.ThreeSome)
            {
                throw new InvalidOperationException();
            }

            if (board.FlopBoard.Flop1.Rank != board.TurnCard.Rank)
            {
                throw new InvalidOperationException();
            }

            FlopBoard = board.FlopBoard;

            FoursomeCard1 = board.FlopBoard.Flop1;
            FoursomeCard2 = board.FlopBoard.Flop2;
            FoursomeCard3 = board.FlopBoard.Flop3;
            FoursomeCard4 = board.TurnCard;
        }
Пример #17
0
        public FoursomeRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.Foursome:
                FoursomeCard1 = TurnBoard.FlopBoard.Flop1;
                FoursomeCard2 = TurnBoard.FlopBoard.Flop2;
                FoursomeCard3 = TurnBoard.FlopBoard.Flop3;
                FoursomeCard4 = TurnBoard.TurnCard;
                SingleCard    = board.River;
                break;

            case TurnBoardRankTextureEnum.HighTri:
                var highTriTexture = new Turn.TurnBoardRankTextures.HighTriRankTexture(TurnBoard);
                FoursomeCard1 = highTriTexture.TriCard1;
                FoursomeCard2 = highTriTexture.TriCard2;
                FoursomeCard3 = highTriTexture.TriCard3;
                if (board.River.Rank != FoursomeCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                FoursomeCard4 = board.River;
                SingleCard    = highTriTexture.SingleCard;
                break;

            case TurnBoardRankTextureEnum.LowTri:
                var lowTriTexture = new Turn.TurnBoardRankTextures.LowTriRankTexture(TurnBoard);
                FoursomeCard1 = lowTriTexture.TriCard1;
                FoursomeCard2 = lowTriTexture.TriCard2;
                FoursomeCard3 = lowTriTexture.TriCard3;
                if (board.River.Rank != FoursomeCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                FoursomeCard4 = board.River;
                SingleCard    = lowTriTexture.SingleCard;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Пример #18
0
        public LowPairRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.LowPair:
                var lowPairTexture = new Turn.TurnBoardRankTextures.LowPairRankTexture(TurnBoard);
                if (board.River.Rank <= lowPairTexture.PairCard1.Rank ||
                    board.River.Rank == lowPairTexture.HighCard.Rank ||
                    board.River.Rank == lowPairTexture.MiddleCard.Rank)
                {
                    throw new InvalidOperationException();
                }
                var cards = new List <Card>()
                {
                    lowPairTexture.HighCard, lowPairTexture.MiddleCard, board.River
                };
                cards.Sort();
                HighCard    = cards[2];
                SecondCard  = cards[1];
                ThirdCard   = cards[0];
                PairedCard1 = lowPairTexture.PairCard1;
                PairedCard2 = lowPairTexture.PairCard2;
                break;

            case TurnBoardRankTextureEnum.Singles:
                var singlesTexture = new Turn.TurnBoardRankTextures.SinglesRankTexture(TurnBoard);
                if (board.River.Rank != singlesTexture.LowCard.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard    = singlesTexture.HighCard;
                SecondCard  = singlesTexture.SecondCard;
                ThirdCard   = singlesTexture.ThirdCard;
                PairedCard1 = singlesTexture.LowCard;
                PairedCard2 = board.River;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Пример #19
0
        public LowTriRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.LowTri:
                var lowTriTexture = new Turn.TurnBoardRankTextures.LowTriRankTexture(TurnBoard);
                if (board.River.Rank == lowTriTexture.SingleCard.Rank ||
                    board.River.Rank < lowTriTexture.TriCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard = board.River.Rank > lowTriTexture.SingleCard.Rank
                        ? board.River
                        : lowTriTexture.SingleCard;
                MiddleCard = board.River.Rank < lowTriTexture.SingleCard.Rank
                        ? board.River
                        : lowTriTexture.SingleCard;
                TriCard1 = lowTriTexture.TriCard1;
                TriCard2 = lowTriTexture.TriCard2;
                TriCard3 = lowTriTexture.TriCard3;
                break;

            case TurnBoardRankTextureEnum.LowPair:
                var lowPairTexture = new Turn.TurnBoardRankTextures.LowPairRankTexture(TurnBoard);
                if (board.River.Rank != lowPairTexture.PairCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                HighCard   = lowPairTexture.HighCard;
                MiddleCard = lowPairTexture.MiddleCard;
                TriCard1   = lowPairTexture.PairCard1;
                TriCard2   = lowPairTexture.PairCard2;
                TriCard3   = board.River;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Пример #20
0
        public HighTriRankTexture(RiverBoard board)
        {
            TurnBoard = board.TurnBoard;
            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.HighTri:
                var highTriTexture = new Turn.TurnBoardRankTextures.HighTriRankTexture(TurnBoard);
                if (board.River.Rank == highTriTexture.SingleCard.Rank ||
                    board.River.Rank == highTriTexture.TriCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                TriCard1   = highTriTexture.TriCard1;
                TriCard2   = highTriTexture.TriCard2;
                TriCard3   = highTriTexture.TriCard3;
                MiddleCard = highTriTexture.SingleCard.Rank > board.River.Rank
                        ? highTriTexture.SingleCard
                        : board.River;
                LowCard = highTriTexture.SingleCard.Rank < board.River.Rank
                       ? highTriTexture.SingleCard
                       : board.River;
                break;

            case TurnBoardRankTextureEnum.HighPair:
                var highPairTexture = new Turn.TurnBoardRankTextures.HighPairRankTexture(TurnBoard);
                if (board.River.Rank != highPairTexture.PairCard1.Rank)
                {
                    throw new InvalidOperationException();
                }
                TriCard1   = highPairTexture.PairCard1;
                TriCard2   = highPairTexture.PairCard2;
                TriCard3   = board.River;
                MiddleCard = highPairTexture.MiddleCard;
                LowCard    = highPairTexture.LowCard;
                break;

            default:
                throw new InvalidOperationException();
            }
        }
Пример #21
0
        public HighPairRankTexture(TurnBoard board)
        {
            FlopBoard = board.FlopBoard;
            var cards = new List <Card>()
            {
                FlopBoard.Flop1, FlopBoard.Flop2, FlopBoard.Flop3, board.TurnCard
            };

            cards.Sort();
            if (cards[2].Rank != cards[3].Rank)
            {
                throw new InvalidOperationException();
            }
            if (cards[0].Rank == cards[1].Rank || cards[1].Rank == cards[2].Rank)
            {
                throw new InvalidOperationException();
            }

            PairCard1  = cards[2];
            PairCard2  = cards[3];
            LowCard    = cards[0];
            MiddleCard = cards[1];
        }
Пример #22
0
 public OffsuitTexture(TurnBoard turnBoard)
 {
 }
Пример #23
0
 public RiverBoard(TurnBoard turnBoard, Card river)
 {
     TurnBoard = turnBoard;
     River     = river;
     SetupTexture();
 }