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); }
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); }
public bool PutCard(Trick trick, int cardId, Suit trump) { var found = false; Card cardToPlay = null; foreach (var card in _deck.GetDeck()) { if (card.GetId() == cardId) { found = true; cardToPlay = card; } } if (!found) { return(false); } var isLegal = trick.PlayIsLegal(cardToPlay, this, trump); if (isLegal) { if (trick.CardIsLeading(cardToPlay, trump)) { trick.SetLeadingPlayer(this); trick.SetLeadingCard(cardToPlay); } trick.AddCard(cardToPlay); trick.AddValue(cardToPlay.GetValue()); _deck.RemoveCard(cardToPlay); } return(isLegal); }
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); }