Example #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();
     }
 }
Example #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];
        }
Example #3
0
        private Func <Card, Card, Tuple <SuitHandGradeEnum, int> > GetFlopGridGrader(FlopBoard flopBoard)
        {
            switch (flopBoard.SuitTexture)
            {
            case FlopBoardSuitTextureEnum.SuitedThree:
                return((c1, c2) =>
                {
                    var tuple = new SuitedThreeSuitTexture(flopBoard).TestGridAgainstBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            case FlopBoardSuitTextureEnum.SuitedTwo:
                return((c1, c2) =>
                {
                    var tuple = new SuitedTwoSuitTexture(flopBoard).TestGridAgainstBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            case FlopBoardSuitTextureEnum.Rainbow:
                return((c1, c2) =>
                {
                    var tuple = new RainbowSuitTexture().TestGridAgainstBoard(c1, c2);
                    return new Tuple <SuitHandGradeEnum, int>(tuple.Item1.Grade(), tuple.Item2);
                });

            default:
                throw new InvalidOperationException();
            }
        }
Example #4
0
 public SuitedTwoSuitTexture(FlopBoard flopBoard)
 {
     if (flopBoard.Flop1.Suit == flopBoard.Flop2.Suit)
     {
         SuitedCard1 = flopBoard.Flop1;
         SuitedCard2 = flopBoard.Flop2;
         OffsuitCard = flopBoard.Flop3;
     }
     else if (flopBoard.Flop1.Suit == flopBoard.Flop3.Suit)
     {
         SuitedCard1 = flopBoard.Flop1;
         SuitedCard2 = flopBoard.Flop3;
         OffsuitCard = flopBoard.Flop2;
     }
     else if (flopBoard.Flop2.Suit == flopBoard.Flop3.Suit)
     {
         SuitedCard1 = flopBoard.Flop2;
         SuitedCard2 = flopBoard.Flop3;
         OffsuitCard = flopBoard.Flop1;
     }
     else
     {
         throw new InvalidOperationException("2 suited, i offsuit");
     }
 }
 public SuitedThreeSuitTexture(FlopBoard flopBoard)
 {
     if (flopBoard.Flop1.Suit != flopBoard.Flop2.Suit || flopBoard.Flop2.Suit != flopBoard.Flop3.Suit)
     {
         throw new InvalidOperationException("Off suit");
     }
     Card1 = flopBoard.Flop1;
     Card2 = flopBoard.Flop2;
     Card3 = flopBoard.Flop3;
     Suit  = Card1.Suit;
 }
Example #6
0
        public FlopHeadsUpBettingStrategy(FlopBoard flopBoard, HoldingHoles heroHoles)
        {
            _flopBoard  = flopBoard;
            _flopFolder = new FlopFolder();
            var enumerator = new FlopFiveCardsEnumerator(_flopBoard, heroHoles);

            _probabilityCalculator = new VillainProbabilityCalculator(
                grid => _flopFolder.ShouldAGridFoldToBoardByRank(grid, _flopBoard),
                grid => _flopFolder.ShouldAGridFoldToBoardBySuit(grid, _flopBoard, heroHoles),
                enumerator.Enumerate);
        }
        public ThreeSomeRankTexture(FlopBoard flopBoard)
        {
            if (flopBoard.Flop1.Rank != flopBoard.Flop2.Rank || flopBoard.Flop2.Rank != flopBoard.Flop3.Rank)
            {
                throw new InvalidOperationException();
            }

            ThreesomeCard1 = flopBoard.Flop1;
            ThreesomeCard2 = flopBoard.Flop2;
            ThreesomeCard3 = flopBoard.Flop3;
        }
Example #8
0
        public SinglesRankTexture(FlopBoard board)
        {
            var cards = new List <Card>()
            {
                board.Flop1, board.Flop2, board.Flop3
            };

            cards.Sort();
            LowCard    = cards[0];
            MiddleCard = cards[1];
            HighCard   = cards[2];
        }
Example #9
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;
        }
Example #10
0
        public HighPairRankTexture(FlopBoard board)
        {
            var cards = new List <Card>()
            {
                board.Flop1, board.Flop2, board.Flop3
            };

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

            if (cards[0].Rank == cards[1].Rank)
            {
                throw new InvalidOperationException();
            }

            SingleCard = cards[0];
            PairCard1  = cards[1];
            PairCard2  = cards[2];
        }
Example #11
0
 public TurnBoard(FlopBoard flopBoard, Card turnCard)
 {
     FlopBoard = flopBoard;
     TurnCard  = turnCard;
     SetTextures();
 }