Beispiel #1
0
        private GridStatusHittingTurn TestGrid(TurnBoard turnBoard, RangeGrid grid)
        {
            var result     = new GridStatusHittingTurn(grid.Category);
            var rankTester = GetGridRankTester(turnBoard);
            var rankResult = rankTester.Invoke(grid);

            result.RankWiseStatus = rankResult;

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

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

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

            return(result);
        }
Beispiel #2
0
        private PlayerRange Squeeze(PlayerRange previousRange, TurnBoard turnBoard, Func <GridHitNewRoundResultEnum, Tuple <bool, PlayerRangeGridStatusEnum> > tester)
        {
            var newRange = previousRange.Clone();

            Logger.Instance.Log($"Before squeezing:\r\n{newRange.ToString()}");

            foreach (var playerRangeGrid in newRange.GetAliveGrids())
            {
                GridStatusHittingTurn result = TestGrid(turnBoard, playerRangeGrid.Grid);
                Logger.Instance.Log($"{playerRangeGrid.Grid.ToString()} tested against the flop, result is {result.RankWiseStatus}");
                Tuple <bool, PlayerRangeGridStatusEnum> testResult = tester.Invoke(result.RankWiseStatus);
                if (testResult.Item1)
                {
                    playerRangeGrid.PlayerRangeGridStatus.RankWiseStatus = testResult.Item2;
                }
                switch (result.Category)
                {
                case GridCategoryEnum.Suited:
                    testResult = tester.Invoke(result.SuitedStatus.HeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.HeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.SuitedStatus.SpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.SpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.SuitedStatus.DiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.DiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.SuitedStatus.ClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.SuitedStatus.ClubStatus = testResult.Item2;
                    }
                    break;

                case GridCategoryEnum.Paired:
                    testResult = tester.Invoke(result.PairedStatus.HeartSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.HeartDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.HeartClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.HeartClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.SpadeDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.SpadeDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.SpadeClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.SpadeClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.PairedStatus.DiamondClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.PairedStatus.DiamondClubStatus = testResult.Item2;
                    }
                    break;

                case GridCategoryEnum.Offsuit:
                    testResult = tester.Invoke(result.OffsuitStatus.HeartSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.HeartDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.HeartClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.HeartClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.SpadeDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeDiamondStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.SpadeClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.DiamondClubStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondClubStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.SpadeHeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.SpadeHeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.DiamondHeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondHeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.ClubHeartStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubHeartStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.DiamondSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.DiamondSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.ClubSpadeStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubSpadeStatus = testResult.Item2;
                    }
                    testResult = tester.Invoke(result.OffsuitStatus.ClubDiamondStatus);
                    if (testResult.Item1)
                    {
                        playerRangeGrid.PlayerRangeGridStatus.OffsuitStatus.ClubDiamondStatus = testResult.Item2;
                    }
                    break;
                }
            }

            Logger.Instance.Log($"After squeezing:\r\n{newRange.ToString()}");

            return(newRange);
        }