public static IEnumerable<Card> GetPlayableCards(this PlayerBase player, TrickView trickInProgress) { var validator = new PlayValidator(trickInProgress); return player .CardList .Where(c => validator .Validate(new Play(c, player)) .IsValid) .OrderBy(c => c.Suit) .ThenBy(c => c.Rank); }
public override Card GetPlay(DealView dealInProgress, TrickView trickInProgress) { var cards = this.GetPlayableCards(trickInProgress); // if there are point cards, attempt to duck the trick var highCard = trickInProgress.WinningPlay.Card; if (trickInProgress.HasPointCards && cards.Any(c => c.IsOutrankedBy(highCard))) { cards = cards.OutrankedBy(highCard); } return cards.First(); }
public override void NotifyTrickResults(TrickView completedTrick) { }
public override Card GetPlay(DealView dealInProgress, TrickView trickInProgress) { return this .GetPlayableCards(trickInProgress) .Choose(); }