public HandRangePercentiles GetPercentiles(PreflopStatusSummary statusSummary) { switch (statusSummary.Status) { case PreflopGameStatusEnum.FoldedToMe: return(GetFoldedToMePercentiles(statusSummary)); case PreflopGameStatusEnum.LimpedPot: return(GetLimpedPotPercentiles(statusSummary)); case PreflopGameStatusEnum.Raised: case PreflopGameStatusEnum.RaisedWithCallers: return(GetRaisedPercentiles(statusSummary)); case PreflopGameStatusEnum.TriBet: case PreflopGameStatusEnum.TriBetWithCallers: return(GetTriBetPercentiles(statusSummary)); case PreflopGameStatusEnum.FourBet: case PreflopGameStatusEnum.FourBetWithCallers: return(GetFourBetPercentiles(statusSummary)); case PreflopGameStatusEnum.FiveBet: case PreflopGameStatusEnum.FiveBetWithCallers: case PreflopGameStatusEnum.AllIn: return(GetAllInPercentiles(statusSummary)); } throw new NotImplementedException(); }
private HandRangePercentiles GetPercentilesOnLimpedPot(PreflopStatusSummary statusSummary) { //#(limper) matters int numOfLimpers = statusSummary.Players.Count(p => p.PlayerStatus != PlayerStatusEnum.Folded) - 2; //2 blinds return(_limpedPot[numOfLimpers]); }
private HandRangePercentiles GetPercentileOnRaisedPot(PreflopStatusSummary statusSummary) { /* * //#(callers) matters, the position of raiser matters * PositionEnum raiserPosition; * List<PositionEnum> callerPositions = new List<PositionEnum>(); * if (statusSummary.Button.Decisions.Last().DecisionType == DecisionType.Raise) * { * raiserPosition = PositionEnum.Button; * } * else if (statusSummary.CuttingOff.Decisions.Last().DecisionType == DecisionType.Raise) * { * raiserPosition = PositionEnum.CuttingOff; * if (statusSummary.Button.Decisions.Last().DecisionType == DecisionType.Call) * { * callerPositions.Add(PositionEnum.Button); * } * } * else if (statusSummary.MiddlePosition.Decisions.Last().DecisionType == DecisionType.Raise) * { * raiserPosition = PositionEnum.MiddlePosition; * if (statusSummary.CuttingOff.Decisions.Last().DecisionType == DecisionType.Call) * { * callerPositions.Add(PositionEnum.CuttingOff); * } * if (statusSummary.Button.Decisions.Last().DecisionType == DecisionType.Call) * { * callerPositions.Add(PositionEnum.Button); * } * } * else if (statusSummary.UnderTheGun.Decisions.Last().DecisionType == DecisionType.Raise) * { * if (statusSummary.MiddlePosition.Decisions.Last().DecisionType == DecisionType.Call) * { * callerPositions.Add(PositionEnum.MiddlePosition); * } * if (statusSummary.CuttingOff.Decisions.Last().DecisionType == DecisionType.Call) * { * callerPositions.Add(PositionEnum.CuttingOff); * } * if (statusSummary.Button.Decisions.Last().DecisionType == DecisionType.Call) * { * callerPositions.Add(PositionEnum.Button); * } * raiserPosition = PositionEnum.UnderTheGun; * } * else * { * throw new InvalidOperationException(); * } * * return GetPercentilesOnRaisedPot(raiserPosition, callerPositions);*/ throw new NotImplementedException(); }
public static PreflopStatusSummary GeneratePreflopStatusSummary(Round round, int heroIndex) { var statusSummary = new PreflopStatusSummary(); foreach (var player in round.Players) { var playerStatus = new PreflopPlayerSummary() { Name = player.Name, Decisions = round.PreflopMoves.Where(m => m.Player.Name.Equals(player.Name)).Select(m => m.Decision).ToList(), Position = player.Position, StackSize = player.StackSize, }; statusSummary.Players.Add(playerStatus); } statusSummary.PreflopRaiseMoves.AddRange(round.PreflopMoves.Where(m => m.Decision.DecisionType.IsRaiseMove() && m.Decision.DecisionType != DecisionType.Ante)); /* * statusSummary.SmallBlind = statusSummary.Players.First(p => p.Position == PositionEnum.SmallBlind); * statusSummary.BigBlind = statusSummary.Players.First(p => p.Position == PositionEnum.BigBlind); * statusSummary.UnderTheGun = statusSummary.Players.First(p => p.Position == PositionEnum.UnderTheGun); * statusSummary.MiddlePosition = statusSummary.Players.First(p => p.Position == PositionEnum.MiddlePosition); * statusSummary.CuttingOff = statusSummary.Players.First(p => p.Position == PositionEnum.CuttingOff); * statusSummary.Button = statusSummary.Players.First(p => p.Position == PositionEnum.Button); */ var mePlayer = round.Players.First(p => p.Index == heroIndex); statusSummary.Me = statusSummary.Players.First(p => p.Name.Equals(mePlayer.Name)); statusSummary.Status = GetPreflopGameStatus(round); statusSummary.IsRaised = round.IsRaised; var chipsRaised = round.Players.Max(p => p.ChipsBetByStage[StageEnum.Preflop]); statusSummary.ChipsToCall = chipsRaised - GetChipsBetByPlayerThisRound(mePlayer, round); statusSummary.BigBlindSize = round.BigBlindSize; statusSummary.PotSize = round.CurrentPotSize; if (round.CurrentRaiser != null) { statusSummary.CurrentRaiser = statusSummary.Players.First(p => p.Position == round.CurrentRaiser.Position && string.Equals(p.Name, round.CurrentRaiser.Name)); } return(statusSummary); }
public HandRangePercentiles GetPercentiles(PreflopStatusSummary statusSummary) { switch (statusSummary.Status) { case PreflopGameStatusEnum.LimpedPot: return(GetPercentilesOnLimpedPot(statusSummary)); case PreflopGameStatusEnum.Raised: case PreflopGameStatusEnum.RaisedWithCallers: return(GetPercentileOnRaisedPot(statusSummary)); default: throw new NotImplementedException($"{statusSummary.Status} not implemented in BigBlindHandRangePercentileConsultant"); } }
public HandRangePercentiles GetPercentiles(PreflopStatusSummary statusSummary) { switch (statusSummary.Status) { case PreflopGameStatusEnum.FoldedToMe: return(GetPercentilesWhenFoldedToMe(statusSummary)); case PreflopGameStatusEnum.LimpedPot: return(GetPercentilesOnLimpedPot(statusSummary)); case PreflopGameStatusEnum.Raised: case PreflopGameStatusEnum.RaisedWithCallers: return(GetPercentileOnRaisedPot(statusSummary)); default: throw new NotImplementedException(); } }
private HandRangePercentiles GetPercentilesWhenFoldedToMe(PreflopStatusSummary statusSummary) { //only deal with bb return(new HandRangePercentiles(0, 0.2, 0.22, 0.3)); }
private HandRangePercentiles GetAllInPercentiles(PreflopStatusSummary statusSummary) { return(_allIn[statusSummary.Me.Position]); }
private HandRangePercentiles GetFourBetPercentiles(PreflopStatusSummary statusSummary) { return(_4Bet[statusSummary.Me.Position]); }
private HandRangePercentiles GetRaisedPercentiles(PreflopStatusSummary statusSummary) { return(_raisedToMe[statusSummary.Me.Position]); }
private int GetNumOfLimpers(PreflopStatusSummary statusSummary) { throw new NotImplementedException(); }
private HandRangePercentiles GetLimpedPotPercentiles(PreflopStatusSummary statusSummary) { //var numOfLimpers = GetNumOfLimpers(statusSummary); return(_limpedPot[statusSummary.Me.Position]); }