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(); } }
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]; }
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(); } }
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; }
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; }
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]; }
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; }
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]; }
public TurnBoard(FlopBoard flopBoard, Card turnCard) { FlopBoard = flopBoard; TurnCard = turnCard; SetTextures(); }