/// <summary>
 ///     For a cheating computer player in a poker game, creates a used deck with enough card for one player to make one swap.
 /// </summary>
 /// <param name="secondHandQuality">Cheat level.</param>
 /// <returns></returns>
 public Tuple<string, string> PopHands(int secondHandQuality)
 {
     var deckCount = secondHandQuality > 0 ? (int)(secondHandQuality / 8) : 0;
     var redealCount = secondHandQuality % 8;
     var structures = new List<NewDeckStructure>();
     for (int i = 0; i < deckCount + 1; i++)
     {
         var structure = new NewDeckStructure();
         structure.Deck = new Deck();
         structure.Deck.Shuffle();
         structure.Hand1 = $"{structure.Deck.Pop()},{structure.Deck.Pop()},{structure.Deck.Pop()},{structure.Deck.Pop()},{structure.Deck.Pop()}";
         var redeals = (i < deckCount ? 8 : redealCount + 1);
         for (int j = 0; j < redeals; j++)
         {
             var hand2 = $"{structure.Deck.Pop()},{structure.Deck.Pop()},{structure.Deck.Pop()},{structure.Deck.Pop()},{structure.Deck.Pop()}";
             var fc = new FormationChecker(hand2);
             fc.CheckFormation();
             var hand2score = fc.Score;
             structure.Hands2.Add(Tuple.Create(hand2, hand2score));
         }
         structures.Add(structure);
     }
     structures.Sort((a, b) => (a.HighestDeck2Score > b.HighestDeck2Score ? 1 : (a.HighestDeck2Score < b.HighestDeck2Score ? -1 : 0)));
     this.deck = structures.Last().Deck;
     return Tuple.Create(structures.Last().Hand1, structures.Last().HighestHand2());
 }
示例#2
0
    /// <summary>
    ///     For a cheating computer player in a poker game, creates a used deck with enough cards left for one player to make one swap.
    /// </summary>
    /// <param name="secondHandQuality">Cheat level.</param>
    /// <returns></returns>
    public HandPair PopHands(int secondHandQuality)
    {
        var deckCount   = secondHandQuality > 0 ? secondHandQuality / 8 : 0;
        var redealCount = secondHandQuality % 8;
        var structures  = new List <NewDeckStructure>();

        for (var i = 0; i < deckCount + 1; i++)
        {
            var structure = new NewDeckStructure
            {
                Deck = new Deck()
            };

            var d = structure.Deck;
            structure.Deck.Shuffle();
            structure.Hand1 = $"{d.PopString()},{d.PopString()},{d.PopString()},{d.PopString()},{d.PopString()}";
            var redeals = i < deckCount ? 8 : redealCount + 1;
            for (var j = 0; j < redeals; j++)
            {
                var hand2 = $"{d.PopString()},{d.PopString()},{d.PopString()},{d.PopString()},{d.PopString()}";

                var fc = new FormationChecker(hand2);

                fc.CheckFormation();

                var hand2Score = fc.Score;

                structure.Hands2.Add(
                    new HandScorePair(hand2, hand2Score)
                    );
            }
            structures.Add(structure);
        }

        structures.Sort(
            (a, b) => a.HighestDeck2Score > b.HighestDeck2Score
                ? 1
                : a.HighestDeck2Score < b.HighestDeck2Score ? -1 : 0
            );

        Deck = structures.Last().Deck;

        return(new HandPair(
                   structures.Last().Hand1 ?? "",
                   structures.Last().HighestHand2()
                   ));
    }