Exemple #1
0
        public bool PlayIsLegal(Card card, Player player, Suit trump)
        {
            // First play
            if (Cards.Count == 0)
            {
                return(true);
            }
            var suit = Cards[0].GetSuit();

            // The card belongs to the requested suit
            if (card.GetSuit() == suit)
            {
                if (suit != trump)
                {
                    return(true);
                }
                if (card.GetValue() > _leadingCard.GetValue() ||
                    (card.GetName().Equals("8") && _leadingCard.GetName().Equals("7")))
                {
                    return(true);
                }
                if (!player.HasGreater(_leadingCard, true))
                {
                    return(true);
                }
                return(false);
            }
            // The card doesn't belong to the requested suit
            if (player.HasSuit(suit))
            {
                return(false);
            }
            if (card.GetSuit() != trump && player.HasSuit(trump))
            {
                return(false);
            }
            if (card.GetSuit() == trump && _leadingCard.GetSuit() == trump)
            {
                if (player.HasGreater(_leadingCard, true) &&
                    !(card.GetValue() > _leadingCard.GetValue() ||
                      (card.GetName().Equals("8") && _leadingCard.GetName().Equals("7"))))
                {
                    return(false);
                }
                return(true);
            }
            if (!player.HasGreater(_leadingCard, false))
            {
                return(true);
            }
            return(true);
        }
Exemple #2
0
 public bool HasGreater(Card cardMin, bool trump)
 {
     if (trump)
     {
         foreach (var card in GetDeck().GetDeck())
         {
             if (card.GetSuit() == cardMin.GetSuit() &&
                 (card.GetValue() > cardMin.GetValue() ||
                  cardMin.GetName().Equals("7") && card.GetName().Equals("8")))
             {
                 return(true);
             }
         }
         return(false);
     }
     foreach (var card in GetDeck().GetDeck())
     {
         if (card.GetSuit() == cardMin.GetSuit() &&
             card.GetId() > cardMin.GetId())
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #3
0
 public bool CardIsLeading(Card card, Suit trump)
 {
     // First play
     if (Cards.Count == 0)
     {
         return(true);
     }
     // The card belongs to the requested suit
     if (Cards[0].GetSuit() == card.GetSuit())
     {
         if (card.GetSuit() != trump && _leadingCard.GetSuit() == trump)
         {
             return(false);
         }
         if (card.GetSuit() != trump && card.GetId() > _leadingCard.GetId())
         {
             return(true);
         }
         if (card.GetSuit() == trump &&
             (card.GetValue() > _leadingCard.GetValue() ||
              card.GetName().Equals("8") && _leadingCard.GetName().Equals("7")))
         {
             return(true);
         }
     }
     // The player cut
     else if (card.GetSuit() == trump)
     {
         if (_leadingCard.GetSuit() != trump ||
             card.GetName().Equals("8") && _leadingCard.GetName().Equals("7") ||
             card.GetValue() > _leadingCard.GetValue())
         {
             return(true);
         }
     }
     // The card isn't of the requested suit & isn't a trump
     return(false);
 }