Пример #1
0
        private void CompareOnFlop()
        {
            var heroBest = new BestFiveCardsHand(new List <Card>()
            {
                HeroHoles.Hole1, HeroHoles.Hole2, BoardStatus.Flop1, BoardStatus.Flop2, BoardStatus.Flop3
            });
            var villainBest = new BestFiveCardsHand(new List <Card>()
            {
                VillainHoles.Hole1, VillainHoles.Hole2, BoardStatus.Flop1, BoardStatus.Flop2, BoardStatus.Flop3
            });

            var heroScore    = BettingUtils.GetScoreForFiveCardHand(heroBest);
            var villainScore = BettingUtils.GetScoreForFiveCardHand(villainBest);

            HeroIsAhead = heroScore > villainScore;

            var allCards = TexasBot.Tools.Utils.GenerateAllCards().Select(c => c.ConvertCard()).ToList();

            allCards.RemoveElementEqualsTo(HeroHoles.Hole1);
            allCards.RemoveElementEqualsTo(HeroHoles.Hole2);
            allCards.RemoveElementEqualsTo(VillainHoles.Hole1);
            allCards.RemoveElementEqualsTo(VillainHoles.Hole2);
            allCards.RemoveElementEqualsTo(BoardStatus.Flop1);
            allCards.RemoveElementEqualsTo(BoardStatus.Flop2);
            allCards.RemoveElementEqualsTo(BoardStatus.Flop3);
            allCards.RemoveElementEqualsTo(BoardStatus.Turn);

            BestFiveCardsHand leader   = HeroIsAhead ? heroBest : villainBest;
            BestFiveCardsHand follower = HeroIsAhead ? villainBest : heroBest;
            List <Card>       outs     = HeroIsAhead ? VillainOuts : HeroOuts;

            outs.AddRange(allCards.Where(card => CardCanHelp(leader, follower, card)));
        }
Пример #2
0
        /// <summary>
        /// If card can help follower to get ahead of leader
        /// </summary>
        /// <param name="leader"></param>
        /// <param name="follower"></param>
        /// <param name="card"></param>
        /// <returns></returns>
        private bool CardCanHelp(BestFiveCardsHand leader, BestFiveCardsHand follower, Card card)
        {
            var leaderSix   = new SixCardsHand(leader.Cards[0], leader.Cards[1], leader.Cards[2], leader.Cards[3], leader.Cards[4], card);
            var followerSix = new SixCardsHand(follower.Cards[0], follower.Cards[1], follower.Cards[2], follower.Cards[3], follower.Cards[4], card);

            var leaderBest   = BettingUtils.FindBestFive(leaderSix);
            var followerBest = BettingUtils.FindBestFive(followerSix);

            var leaderScore   = BettingUtils.GetScoreForFiveCardHand(leaderBest);
            var followerScore = BettingUtils.GetScoreForFiveCardHand(followerBest);

            return(followerScore > leaderScore);
        }