private int HowManyPairs(IDeckDict <CribbageCard> thisCol) { var newCol = thisCol.ToRegularDeckDict(); int output = 0; CribbageCard newCard; DeckRegularDict <CribbageCard> finals = new DeckRegularDict <CribbageCard>(); newCol.Add(StartCard()); newCol.RemoveAllOnly(items => items.HasUsed); var whatNewRummy = _rummys !.WhatNewRummy(newCol, 2, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false); if (whatNewRummy.Count == 0) { return(0); } if (whatNewRummy.Count > 2) { finals.AddRange(newCol); newCard = whatNewRummy.First(); finals.KeepConditionalItems(items => items.Value != newCard.Value); newCol.Clear(); newCol.AddRange(finals); whatNewRummy = _rummys.WhatNewRummy(newCol, 2, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false); if (whatNewRummy.Count == 0) { return(0); } finals.Clear(); } output++; newCard = whatNewRummy.First(); finals.Clear(); finals.AddRange(newCol); finals.KeepConditionalItems(items => items.Value != newCard.Value); //i think newCol.Clear(); newCol.AddRange(finals); whatNewRummy = _rummys.WhatNewRummy(newCol, 2, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false); if (whatNewRummy.Count == 0) { return(output); } if (whatNewRummy.Count > 2) { return(output); } return(output + 1); }
private int FindBestCard(DeckRegularDict <RegularSimpleCard> list) { var bestsuit = list.GroupBy(x => x.Suit).OrderByDescending(Temps => Temps.Count()); var suituse = bestsuit.First().Key; list.KeepConditionalItems(Items => Items.Suit == suituse); return(list.GetRandomItem().Deck); }
public bool HadProperKind(IDeckDict <CribbageCard> thisCol, CribbageCombos thisCombo) { var newCol = thisCol.ToRegularDeckDict(); DeckRegularDict <CribbageCard> finals = new DeckRegularDict <CribbageCard>(); newCol.Add(StartCard()); finals.AddRange(newCol); finals.KeepConditionalItems(items => items.HasUsed == false); newCol.Clear(); newCol.AddRange(finals); var whatNewRummy = _rummys !.WhatNewRummy(newCol, thisCombo.NumberForKind, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false); if (whatNewRummy.Count == 0) { return(false); } if (whatNewRummy.Count > thisCombo.NumberForKind) { return(false); } whatNewRummy.ForEach(thisCard => thisCard.HasUsed = true); return(true); }