public override IHand Check(List <Card> cards) { HandBase hand = null; if (cards.Count < 5) { return(null); } var groupCard = cards.GroupBy(x => x.Value) .Select(group => @group.ToList()[0]) .OrderByDescending(x => x.Value) .ToList(); AddOneIfAs(groupCard); for (int i = 0; i + 5 <= groupCard.Count; i++) { if (groupCard.ToList()[i].Value - groupCard.ToList()[i + 4].Value == 4) { int cardMinValue = groupCard.ToList()[i + 4].Value; int cardMaxValue = groupCard.ToList()[i].Value; hand = new HandStraight(); hand.SelectedCards.AddRange(groupCard.Where(x => x.Value >= cardMinValue && x.Value <= cardMaxValue).ToList()); } if (hand != null) { return(hand); } } return(null); }
public virtual IHand Check(List <Card> cards) { HandBase hand = new HandBase(); hand.SelectedCards.AddRange(cards.OrderByDescending(x => x.Value).Take(5)); return(hand); }