Exemplo n.º 1
0
        public bool ShouldAGridFoldToBet(RangeGrid grid)
        {
            var grade = TestGridAgainstBoard(grid).Item1.Grade();
            var hit   = HitTurn(grid);

            return(hit == GridHitNewRoundResultEnum.None && grade <= RankHandGradeEnum.OnePair);
        }
Exemplo n.º 2
0
        public bool ShouldAGridFoldToBet(RangeGrid grid)
        {
            var outcome = TestGridAgainstBoard(grid).Item1;

            return(outcome == FoursomeOutcomeEnum.FoursomeWeakKicker ||
                   outcome == FoursomeOutcomeEnum.FoursomeNoneKicker);
        }
Exemplo n.º 3
0
        public SuitedStatus <BoardRangeGridStatusEnum> TestSuitedGrid(RangeGrid grid)
        {
            if (grid.Category != GridCategoryEnum.Suited)
            {
                throw new InvalidOperationException($"{grid.Category}");
            }
            var result = new SuitedStatus <BoardRangeGridStatusEnum>();
            var suits  = new SuitEnum[] { SuitEnum.Heart, SuitEnum.Spade, SuitEnum.Diamond, SuitEnum.Club };

            foreach (var suit in suits)
            {
                if (!(grid.Card1AvaliableSuits.Contains(suit) && grid.Card2AvaliableSuits.Contains(suit)))
                {
                    switch (suit)
                    {
                    case SuitEnum.Heart:
                        result.HeartStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;

                    case SuitEnum.Spade:
                        result.SpadeStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;

                    case SuitEnum.Diamond:
                        result.DiamondStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;

                    case SuitEnum.Club:
                        result.ClubStatus = BoardRangeGridStatusEnum.Unavailable;
                        break;
                    }
                    continue;
                }

                var hole1 = new Card(suit, grid.HighRank);
                var hole2 = new Card(suit, grid.LowRank);

                var outcome = TestGridAgainstBoard(hole1, hole2).Item1;
                switch (suit)
                {
                case SuitEnum.Heart:
                    result.HeartStatus = TranslateOutcomeToGridStatus(outcome);
                    break;

                case SuitEnum.Spade:
                    result.SpadeStatus = TranslateOutcomeToGridStatus(outcome);
                    break;

                case SuitEnum.Diamond:
                    result.DiamondStatus = TranslateOutcomeToGridStatus(outcome);
                    break;

                case SuitEnum.Club:
                    result.ClubStatus = TranslateOutcomeToGridStatus(outcome);
                    break;
                }
            }

            return(result);
        }
Exemplo n.º 4
0
        public GridHitNewRoundResultEnum HitTurn(RangeGrid grid)
        {
            RankHandGradeEnum flopGrade;
            int flopInvolved;

            switch (FlopBoard.RankTexture)
            {
            case FlopBoardRankTextureEnum.LowPair:
                var lowPairTuple = new Flop.FlopBoardRankTextures.LowPairRankTexture(FlopBoard).TestGridAgainstBoard(grid);
                flopGrade    = lowPairTuple.Item1.Grade();
                flopInvolved = lowPairTuple.Item2;
                break;

            case FlopBoardRankTextureEnum.ThreeSome:
                var threesomeTuple = new Flop.FlopBoardRankTextures.ThreeSomeRankTexture(FlopBoard).TestGridAgainstBoard(grid);
                flopGrade    = threesomeTuple.Item1.Grade();
                flopInvolved = threesomeTuple.Item2;
                break;

            default:
                throw new InvalidOperationException($"Impossible to have {FlopBoard.RankTexture}");
            }
            var turnTuple        = TestGridAgainstBoard(grid);
            var turnOutcomeGrade = turnTuple.Item1.Grade();
            var turnInvolved     = turnTuple.Item2;

            if (turnOutcomeGrade > flopGrade)
            {
                return((turnInvolved > flopInvolved) ? GridHitNewRoundResultEnum.Promoted : GridHitNewRoundResultEnum.Enhanced);
            }
            return(GridHitNewRoundResultEnum.None);
        }
Exemplo n.º 5
0
        public bool ShouldAGridFoldToBoardByRank(RangeGrid grid, TurnBoard turnBoard)
        {
            switch (turnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.Foursome:
                return(new FoursomeRankTexture(turnBoard).ShouldAGridFoldToBet(grid));

            case TurnBoardRankTextureEnum.HighTri:
                return(new HighTriRankTexture(turnBoard).ShouldAGridFoldToBet(grid));

            case TurnBoardRankTextureEnum.LowTri:
                return(new LowTriRankTexture(turnBoard).ShouldAGridFoldToBet(grid));

            case TurnBoardRankTextureEnum.TwoPairs:
                return(new TwoPairsRankTexture(turnBoard).ShouldAGridFoldToBet(grid));

            case TurnBoardRankTextureEnum.HighPair:
                return(new HighPairRankTexture(turnBoard).ShouldAGridFoldToBet(grid));

            case TurnBoardRankTextureEnum.MiddlePair:
                return(new MiddlePairRankTexture(turnBoard).ShouldAGridFoldToBet(grid));

            case TurnBoardRankTextureEnum.LowPair:
                return(new LowPairRankTexture(turnBoard).ShouldAGridFoldToBet(grid));

            case TurnBoardRankTextureEnum.Singles:
                return(new SinglesRankTexture(turnBoard).ShouldAGridFoldToBet(grid));
            }
            throw new NotImplementedException();
        }
Exemplo n.º 6
0
        public BoardRangeGridStatusEnum TestGridAgainstFlopBoard(RangeGrid grid)
        {
            var outcome = TestGridAgainstBoard(grid).Item1;

            Logger.Instance.Log($"Testing {grid.ToString()} against LowPair flop, outcome is {outcome}");
            switch (outcome)
            {
            case LowPairOutcomeEnum.FourSome:
            case LowPairOutcomeEnum.HighFullHouse:
                return(BoardRangeGridStatusEnum.Nuts);

            case LowPairOutcomeEnum.LowFullHouse:
            case LowPairOutcomeEnum.ThreeSomeTopKicker:
            case LowPairOutcomeEnum.ThreeSomeGoodKicker:
                return(BoardRangeGridStatusEnum.Elite);

            case LowPairOutcomeEnum.ThreeSomeWeakKicker:
            case LowPairOutcomeEnum.OverTwoPairs:
                return(BoardRangeGridStatusEnum.Good);

            case LowPairOutcomeEnum.OnePairTopKicker:
            case LowPairOutcomeEnum.OnePairGoodKicker:
            case LowPairOutcomeEnum.OnePairWeakKicker:
                return(ShouldRankDrawFold(grid) ? BoardRangeGridStatusEnum.Trash : BoardRangeGridStatusEnum.Marginal);

            default:
                return(BoardRangeGridStatusEnum.Marginal);
            }
        }
Exemplo n.º 7
0
        private GridStatusInBoardRange TestGrid(FlopBoard flopBoard, RangeGrid grid)
        {
            var result     = new GridStatusInBoardRange(grid.Category);
            var rankTester = GetGridRankTester(flopBoard);
            var rankResult = rankTester.Invoke(grid);

            result.RankWiseStatus = rankResult;

            switch (result.Category)
            {
            case GridCategoryEnum.Suited:
                result.SuitedStatus = GetSuitedTester(flopBoard).Invoke(grid);
                break;

            case GridCategoryEnum.Paired:
                result.PairedStatus = GetPairedTester(flopBoard).Invoke(grid);
                break;

            case GridCategoryEnum.Offsuit:
                result.OffsuitStatus = GetOffsuitTester(flopBoard).Invoke(grid);
                break;
            }

            return(result);
        }
Exemplo n.º 8
0
        public BoardRangeGridStatusEnum TestGridAgainstFlopBoard(RangeGrid grid)
        {
            var outcome = TestGridAgainstBoard(grid).Item1;
            BoardRangeGridStatusEnum result;

            switch (outcome)
            {
            case ThreesomeOutcomeEnum.FourSome:
                result = BoardRangeGridStatusEnum.Nuts;
                break;

            case ThreesomeOutcomeEnum.TopFullHouse:
            case ThreesomeOutcomeEnum.GoodFullHouse:
                result = BoardRangeGridStatusEnum.Elite;
                break;

            case ThreesomeOutcomeEnum.WeakFullHouse:
                result = BoardRangeGridStatusEnum.Good;
                break;

            case ThreesomeOutcomeEnum.ThreeSomeGoodKicker:
            case ThreesomeOutcomeEnum.ThreeSomeWeakKicker:
                result = BoardRangeGridStatusEnum.Trash;
                break;

            default:
                result = BoardRangeGridStatusEnum.Marginal;
                break;
            }

            Logger.Instance.Log($"{grid.ToString()} tested on Threesome flop, outcome:{outcome}|result:{result}");
            return(result);
        }
Exemplo n.º 9
0
 private Tuple <HighTriLowPairOutcomeEnum, int> TestGridAgainstBoard(RangeGrid grid)
 {
     /*
      * HighFoursome,
      * LowFoursome,
      * TopPairFullHouse,
      * GoodOverPairFullHouse,
      * WeakOverPairFullHouse,
      * MiddleFullHouse,*/
     if (grid.HighRank == TriCard1.Rank || grid.LowRank == TriCard1.Rank)
     {
         return(new Tuple <HighTriLowPairOutcomeEnum, int>(HighTriLowPairOutcomeEnum.HighFoursome, 1));
     }
     if (grid.Category == GridCategoryEnum.Paired)
     {
         if (grid.HighRank == PairCard1.Rank)
         {
             return(new Tuple <HighTriLowPairOutcomeEnum, int>(HighTriLowPairOutcomeEnum.LowFoursome, 2));
         }
         if (grid.HighRank > PairCard1.Rank)
         {
             if (grid.HighRank == RankEnum.Ace)
             {
                 return(new Tuple <HighTriLowPairOutcomeEnum, int>(HighTriLowPairOutcomeEnum.TopPairFullHouse, 2));
             }
             if (grid.HighRank > RankEnum.Ten)
             {
                 return(new Tuple <HighTriLowPairOutcomeEnum, int>(HighTriLowPairOutcomeEnum.GoodOverPairFullHouse, 2));
             }
             return(new Tuple <HighTriLowPairOutcomeEnum, int>(HighTriLowPairOutcomeEnum.WeakOverPairFullHouse, 2));
         }
     }
     return(new Tuple <HighTriLowPairOutcomeEnum, int>(HighTriLowPairOutcomeEnum.FullHouse, 0));
 }
Exemplo n.º 10
0
        public GridHitNewRoundResultEnum HitRiver(RangeGrid grid)
        {
            RankHandGradeEnum turnGrade;
            int turnInvolved;

            switch (TurnBoard.RankTexture)
            {
            case TurnBoardRankTextureEnum.HighPair:
                var highPairTuple = new Turn.TurnBoardRankTextures.HighPairRankTexture(TurnBoard).TestGridAgainstBoard(grid);
                turnGrade    = highPairTuple.Item1.Grade();
                turnInvolved = highPairTuple.Item2;
                break;

            case TurnBoardRankTextureEnum.Singles:
                var singlesTuple = new Turn.TurnBoardRankTextures.SinglesRankTexture(TurnBoard).TestGridAgainstBoard(grid);
                turnGrade    = singlesTuple.Item1.Grade();
                turnInvolved = singlesTuple.Item2;
                break;

            default:
                throw new InvalidOperationException($"Impossible to have {TurnBoard.RankTexture}");
            }
            var riverTuple        = TestGridAgainstBoard(grid);
            var riverOutcomeGrade = riverTuple.Item1.Grade();
            var riverInvolved     = riverTuple.Item2;

            if (riverOutcomeGrade > turnGrade)
            {
                return((riverInvolved > turnInvolved) ? GridHitNewRoundResultEnum.Promoted : GridHitNewRoundResultEnum.Enhanced);
            }
            return(GridHitNewRoundResultEnum.None);
        }
Exemplo n.º 11
0
        public bool ShouldAGridFoldToBet(RangeGrid grid)
        {
            var outcome = TestGridAgainstBoard(grid).Item1;

            return(outcome == ThirdPairOutcomeEnum.GoodKicker ||
                   outcome == ThirdPairOutcomeEnum.WeakKicker ||
                   outcome == ThirdPairOutcomeEnum.NoneKicker);
        }
Exemplo n.º 12
0
 public T Get(RangeGrid grid)
 {
     if (_dict.ContainsKey(grid.ToString()))
     {
         return(_dict[grid.ToString()]);
     }
     return(default(T));
 }
Exemplo n.º 13
0
        public Tuple <TwoPairsOutcomeEnum, int> TestGridAgainstBoard(RangeGrid grid)
        {/*
          * HighFoursome,
          * LowFoursome,
          * HighFullHouse,
          * LowFullHouse,
          * OverTwoPairs,
          * HighBetweenTwoPairs,
          * TopKicker,
          * OverGoodKicker,
          * OverWeakKicker,
          * NoneKicker*/
            if (grid.Category == GridCategoryEnum.Paired)
            {
                if (grid.HighRank == HighPairCard1.Rank)
                {
                    return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.HighFoursome, 2));
                }
                if (grid.HighRank == LowPairCard1.Rank)
                {
                    return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.LowFoursome, 2));
                }
            }

            if (grid.HighRank == HighPairCard1.Rank || grid.LowRank == HighPairCard1.Rank)
            {
                return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.HighFullHouse, 1));
            }

            if (grid.HighRank == LowPairCard1.Rank || grid.LowRank == LowPairCard2.Rank)
            {
                return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.LowFullHouse, 1));
            }

            if (grid.Category == GridCategoryEnum.Paired)
            {
                if (grid.HighRank > HighPairCard1.Rank)
                {
                    return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.OverTwoPairs, 2));
                }
                if (grid.HighRank > LowPairCard1.Rank)
                {
                    return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.HighBetweenTwoPairs, 2));
                }
            }

            if (grid.HighRank == RankEnum.Ace)
            {
                return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.TopKicker, 0));
            }

            if (grid.HighRank > RankEnum.Ten)
            {
                return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.GoodKicker, 0));
            }

            return(new Tuple <TwoPairsOutcomeEnum, int>(TwoPairsOutcomeEnum.WeakKicker, 0));
        }
Exemplo n.º 14
0
 public SuitedStatus <BoardRangeGridStatusEnum> TestSuitedGrid(RangeGrid grid)
 {
     return(new SuitedStatus <BoardRangeGridStatusEnum>()
     {
         HeartStatus = BoardRangeGridStatusEnum.Trash,
         SpadeStatus = BoardRangeGridStatusEnum.Trash,
         DiamondStatus = BoardRangeGridStatusEnum.Trash,
         ClubStatus = BoardRangeGridStatusEnum.Trash
     });
 }
Exemplo n.º 15
0
        public bool ShouldAGridFoldToBet(RangeGrid grid)
        {
            var outcome = TestGridAgainstBoard(grid).Item1;

            if (outcome.Grade() == RankHandGradeEnum.HighCard)
            {
                return(ShouldRankDrawFold(grid));
            }

            return(false);
        }
Exemplo n.º 16
0
        public Dictionary <Tuple <SuitEnum, SuitEnum>, bool> ShouldAGridFoldToBet(RangeGrid grid)
        {
            var result = new Dictionary <Tuple <SuitEnum, SuitEnum>, bool>();

            foreach (var tuple in grid.EnumerateAllPossibleHoles())
            {
                var hole1 = tuple.Item1;
                var hole2 = tuple.Item2;
                result.Add(new Tuple <SuitEnum, SuitEnum>(hole1.Suit, hole2.Suit), true);
            }
            return(result);
        }
Exemplo n.º 17
0
 public PairedStatus <BoardRangeGridStatusEnum> TestPairedGrid(RangeGrid grid)
 {
     return(new PairedStatus <BoardRangeGridStatusEnum>()
     {
         HeartSpadeStatus = BoardRangeGridStatusEnum.Trash,
         HeartClubStatus = BoardRangeGridStatusEnum.Trash,
         HeartDiamondStatus = BoardRangeGridStatusEnum.Trash,
         SpadeDiamondStatus = BoardRangeGridStatusEnum.Trash,
         SpadeClubStatus = BoardRangeGridStatusEnum.Trash,
         DiamondClubStatus = BoardRangeGridStatusEnum.Trash,
     });
 }
Exemplo n.º 18
0
 public Tuple <FoursomeOutcomeEnum, int> TestGridAgainstBoard(RangeGrid grid)
 {
     if (grid.HighRank == RankEnum.Ace)
     {
         return(new Tuple <FoursomeOutcomeEnum, int>(FoursomeOutcomeEnum.FoursomeTopKicker, 0));
     }
     if (grid.HighRank > RankEnum.Ten)
     {
         return(new Tuple <FoursomeOutcomeEnum, int>(FoursomeOutcomeEnum.FoursomeGoodKicker, 0));
     }
     return(new Tuple <FoursomeOutcomeEnum, int>(FoursomeOutcomeEnum.FoursomeWeakKicker, 0));
 }
Exemplo n.º 19
0
        public bool ShouldAGridFoldToBet(RangeGrid grid)
        {
            var outcome = TestGridAgainstBoard(grid).Item1;

            //todo consider betSize later

            switch (outcome)
            {
            case ThreesomeOutcomeEnum.ThreeSomeGoodKicker:
            case ThreesomeOutcomeEnum.ThreeSomeWeakKicker:
                return(true);
            }

            return(false);
        }
Exemplo n.º 20
0
        public bool ShouldAGridFoldToBoardByRank(RangeGrid grid, RiverBoard riverBoard)
        {
            switch (riverBoard.RankTexture)
            {
            case RiverRankTextureEnum.Foursome:
                return(new FoursomeRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.HighTriLowPair:
                return(new HighTriLowPairRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.LowTriHighPair:
                return(new LowTriHighPairRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.HighTri:
                return(new HighTriRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.MiddleTri:
                return(new MiddleTriRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.LowTri:
                return(new LowTriRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.HighTwoPairs:
                return(new HighTwoPairsRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.HighLowTwoPairs:
                return(new HighLowTwoPairsRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.LowTwoPairs:
                return(new LowTwoPairsRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.HighPair:
                return(new HighPairRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.SecondPair:
                return(new SecondPairRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.ThirdPair:
                return(new ThirdPairRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.LowPair:
                return(new LowPairRankTexture(riverBoard).ShouldAGridFoldToBet(grid));

            case RiverRankTextureEnum.Singles:
                return(new SinglesRankTexture(riverBoard).ShouldAGridFoldToBet(grid));
            }
            throw new InvalidOperationException();
        }
Exemplo n.º 21
0
        public bool ShouldAGridFoldToBet(RangeGrid grid)
        {
            var outcome = TestGridAgainstBoard(grid).Item1;

            //todo consider betSize later

            switch (outcome)
            {
            case HighPairOutcomeEnum.OnePairTopKicker:
            case HighPairOutcomeEnum.OnePairGoodKicker:
            case HighPairOutcomeEnum.OnePairWeakKicker:
                return(ShouldRankDrawFold(grid));
            }

            return(false);
        }
Exemplo n.º 22
0
        public Tuple <TriOutcomeEnum, int> TestGridAgainstBoard(RangeGrid grid)
        {/*
          * Foursome,
          * GoodOverFullHouse,
          * WeakOverFullHouse,
          * MiddleFullHouse,
          * UnderFullHouse,
          * ThreesomeTopKicker,
          * ThreesomeOverGoodKicker,
          * ThreesomeOverWeakKicker,
          * ThreesomeNoneKicker*/
            if (grid.HighRank == TriCard1.Rank || grid.LowRank == TriCard1.Rank)
            {
                return(new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.Foursome, 1));
            }
            if (grid.Category == GridCategoryEnum.Paired)
            {
                if (grid.HighRank == SingleCard.Rank)
                {
                    return(new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.OverTriFullHouse, 2));
                }

                if (grid.HighRank > SingleCard.Rank)
                {
                    return(grid.HighRank > RankEnum.Ten
                        ? new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.GoodOverFullHouse, 2)
                        : new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.OverFullHouse, 2));
                }
                return(new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.UnderFullHouse, 2));
            }

            if (grid.HighRank == SingleCard.Rank || grid.LowRank == SingleCard.Rank)
            {
                return(new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.FullHouse, 1));
            }
            if (grid.HighRank == RankEnum.Ace)
            {
                return(new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.ThreesomeTopKicker, 0));
            }
            if (grid.HighRank > SingleCard.Rank)
            {
                return(grid.HighRank > RankEnum.Ten ?
                       new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.ThreesomeOverGoodKicker, 0)
                    : new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.ThreesomeOverWeakKicker, 0));
            }
            return(new Tuple <TriOutcomeEnum, int>(TriOutcomeEnum.ThreesomeNoneKicker, 0));
        }
Exemplo n.º 23
0
        public static List <Tuple <Card, Card> > EnumerateAllPossibleHoles(this RangeGrid grid)
        {
            switch (grid.Category)
            {
            case GridCategoryEnum.Suited:
                return(grid.EnumerateAllPossibleHolesForSuitedGrid().ToList());

            case GridCategoryEnum.Paired:
                return(grid.EnumerateAllPossibleHolesForPairedGrid().ToList());

            case GridCategoryEnum.Offsuit:
                return(grid.EnumerateAllPossibleHolesForOffsuitGrid().ToList());

            default:
                throw new InvalidOperationException();
            }
        }
Exemplo n.º 24
0
        public Dictionary <Tuple <SuitEnum, SuitEnum>, bool> ShouldAGridFoldToBet(RangeGrid grid)
        {
            var result = new Dictionary <Tuple <SuitEnum, SuitEnum>, bool>();
            var suits  = new List <SuitEnum>()
            {
                SuitEnum.Heart, SuitEnum.Spade, SuitEnum.Diamond, SuitEnum.Club
            };

            foreach (var suit1 in suits)
            {
                foreach (var suit2 in suits)
                {
                    result.Add(new Tuple <SuitEnum, SuitEnum>(suit1, suit2), true);
                }
            }
            return(result);
        }
Exemplo n.º 25
0
        private bool ShouldRankDrawFold(RangeGrid grid)
        {
            var rankDraw =
                grid.TestRankDrawOnFlop(new List <RankEnum>()
            {
                SingleCard.Rank, PairCard1.Rank, PairCard2.Rank
            });

            switch (rankDraw)
            {
            case RankDrawEnum.Nothing:
                return(true);

            default:
                return(false);
            }
        }
Exemplo n.º 26
0
        public bool ShouldAGridFoldToBoardByRank(RangeGrid grid, FlopBoard flopBoard)
        {
            switch (flopBoard.RankTexture)
            {
            case FlopBoardRankTextureEnum.ThreeSome:
                return(new ThreeSomeRankTexture(flopBoard).ShouldAGridFoldToBet(grid));

            case FlopBoardRankTextureEnum.HighPair:
                return(new HighPairRankTexture(flopBoard).ShouldAGridFoldToBet(grid));

            case FlopBoardRankTextureEnum.LowPair:
                return(new LowPairRankTexture(flopBoard).ShouldAGridFoldToBet(grid));

            case FlopBoardRankTextureEnum.Singles:
                return(new SinglesRankTexture(flopBoard).ShouldAGridFoldToBet(grid));
            }
            throw new NotImplementedException();
        }
Exemplo n.º 27
0
 public OffsuitStatus <BoardRangeGridStatusEnum> TestOffsuitGrid(RangeGrid grid)
 {
     return(new OffsuitStatus <BoardRangeGridStatusEnum>()
     {
         HeartSpadeStatus = BoardRangeGridStatusEnum.Trash,
         HeartClubStatus = BoardRangeGridStatusEnum.Trash,
         HeartDiamondStatus = BoardRangeGridStatusEnum.Trash,
         SpadeDiamondStatus = BoardRangeGridStatusEnum.Trash,
         SpadeClubStatus = BoardRangeGridStatusEnum.Trash,
         DiamondClubStatus = BoardRangeGridStatusEnum.Trash,
         SpadeHeartStatus = BoardRangeGridStatusEnum.Trash,
         ClubHeartStatus = BoardRangeGridStatusEnum.Trash,
         DiamondHeartStatus = BoardRangeGridStatusEnum.Trash,
         DiamondSpadeStatus = BoardRangeGridStatusEnum.Trash,
         ClubSpadeStatus = BoardRangeGridStatusEnum.Trash,
         ClubDiamondStatus = BoardRangeGridStatusEnum.Trash,
     });
 }
Exemplo n.º 28
0
        private BoardRangeGridStatusEnum TestGrid(FlopBoard flopBoard, RangeGrid grid)
        {
            switch (flopBoard.RankTexture)
            {
            case FlopBoardRankTextureEnum.ThreeSome:
                return(new ThreeSomeRankTexture(flopBoard).TestGridAgainstFlopBoard(grid));

            case FlopBoardRankTextureEnum.HighPair:
                return(new HighPairRankTexture(flopBoard).TestGridAgainstFlopBoard(grid));

            case FlopBoardRankTextureEnum.LowPair:
                return(new LowPairRankTexture(flopBoard).TestGridAgainstFlopBoard(grid));

            case FlopBoardRankTextureEnum.Singles:
                return(new SinglesRankTexture(flopBoard).TestGridAgainstFlopBoard(grid));
            }
            throw new NotImplementedException();
        }
Exemplo n.º 29
0
        public Tuple <ThreesomeOutcomeEnum, int> TestGridAgainstBoard(RangeGrid grid)
        {
            /*
             * FourSomeTopKicker, //AJ
             * FourSomeGoodKicker,    //QJ
             * FourSomeWeakKicker,    //J7
             * TopFullHouse,   //AA
             * GoodFullHouse,  //QQ
             * WeakFullHouse, //88
             * ThreeSomeTopKicker,  //AQ
             * ThreeSomeGoodKicker,    //QT
             * ThreeSomeWeakKicker,    //98
             */

            if (grid.HighRank == ThreesomeCard1.Rank || grid.LowRank == ThreesomeCard1.Rank)
            {
                return(new Tuple <ThreesomeOutcomeEnum, int>(ThreesomeOutcomeEnum.FourSome, 1));
            }

            if (grid.HighRank == grid.LowRank)
            {
                //full house
                if (grid.HighRank == RankEnum.Ace)
                {
                    return(new Tuple <ThreesomeOutcomeEnum, int>(ThreesomeOutcomeEnum.TopFullHouse, 2));
                }
                if (grid.HighRank > ThreesomeCard1.Rank)
                {
                    return(new Tuple <ThreesomeOutcomeEnum, int>(ThreesomeOutcomeEnum.GoodFullHouse, 2));
                }
                return(new Tuple <ThreesomeOutcomeEnum, int>(ThreesomeOutcomeEnum.WeakFullHouse, 2));
            }

            if (grid.HighRank == RankEnum.Ace)
            {
                return(new Tuple <ThreesomeOutcomeEnum, int>(ThreesomeOutcomeEnum.ThreeSomeTopKicker, 0));
            }
            if (grid.HighRank > RankEnum.Ten)
            {
                return(new Tuple <ThreesomeOutcomeEnum, int>(ThreesomeOutcomeEnum.ThreeSomeGoodKicker, 0));
            }

            return(new Tuple <ThreesomeOutcomeEnum, int>(ThreesomeOutcomeEnum.ThreeSomeWeakKicker, 0));
        }
Exemplo n.º 30
0
        public GridGradeOnBoardEnum GetGridGrade(RangeGrid rangeGrid)
        {
            if (EliteRangeGrids.Contains(rangeGrid))
            {
                return(GridGradeOnBoardEnum.Elite);
            }

            if (EliteWhenSuitedRangeGrids.Contains(rangeGrid))
            {
                return(GridGradeOnBoardEnum.EliteWhenSuited);
            }

            if (TrashRangeGrids.Contains(rangeGrid))
            {
                return(GridGradeOnBoardEnum.Trash);
            }

            return(GridGradeOnBoardEnum.Marginal);
        }