Example #1
0
 /// <summary>
 /// Use this method to bury cards in a Called-Ace game.
 /// </summary>
 public void BuryCards(IHand hand, IHumanPlayer picker, List <SheepCard> cardsToBury, bool goItAlone, SheepCard partnerCard)
 {
     if (picker.Cards.Contains(partnerCard))
     {
         throw new ArgumentException("Picker has the parner card");
     }
     if (!picker.Cards.Any(c => CardUtil.GetSuit(c) == CardUtil.GetSuit(partnerCard)))
     {
         throw new ArgumentException($"Picker does not have a card in the {CardUtil.GetSuit(partnerCard).ToString()} suit");
     }
     if (!_validCalledAceCards.Contains(partnerCard))
     {
         throw new ArgumentException($"{CardUtil.GetAbbreviation(partnerCard)} is not a valid partner card.");
     }
     hand.SetPartnerCard(partnerCard);
     BuryCards(hand, picker, cardsToBury, goItAlone);
 }
Example #2
0
        public static TrickResults GetTrickWinners(IHand hand)
        {
            var tricks  = hand.ITricks ?? new List <ITrick>();
            var winners = tricks.Where(t => t.PlayersWithoutTurn.Count == 0).Select(t => t?.Winner()?.Player?.Name).ToList();

            return(new TrickResults()
            {
                Picker = hand.Picker?.Name,
                Partner = hand.Partner?.Name,
                PartnerCard = hand.PartnerCardEnum == null ? null : CardUtil.GetAbbreviation(hand.PartnerCardEnum.Value),
                TrickWinners = winners,
                LeastersHand = hand?.Leasters ?? false,
                Tricks = hand
                         ?.ITricks
                         ?.Where(t => t.IsComplete())
                         ?.Select(trick =>
                                  trick.OrderedMoves
                                  .Select(move => new KeyValuePair <string, CardSummary>(move.Key.Name, CardUtil.GetCardSummary(move.Value)))
                                  .ToList()
                                  )
                         ?.ToList()
            });
        }