private int CalculateWeight(TrickTracker tracker, Card selectedCard, List <Card> selectedTrick, bool scopa) { // Make a decision here based on the number of denari as well as the primiera value // of the in the trick (also base this on player need. i.e. if the primiera value is above // the mid-range value (78) then we can prioritize denari and vise-versa for denari if the // player has more than 5 denari we can prioritize pirmiera. As a last criteria we pick up // as many cards as possible in each trick. List <Card> trick = new List <Card>(selectedTrick); trick.Add(selectedCard); TrickTracker newTracker = tracker.GetPossibleScores(trick, scopa); int weight = ((!tracker.SetteBello && newTracker.SetteBello) ? 84 : 0) + (scopa ? 84 : 0) + ((tracker.PrimieraValue > 78) ? 1 : 2) * (newTracker.PrimieraValue - tracker.PrimieraValue) + ((tracker.DenariCount > 5) ? 1 : 2) * (newTracker.DenariCount - tracker.DenariCount) + (newTracker.CardCount - tracker.CardCount); Console.Out.WriteLine("SetteBello " + newTracker.SetteBello + ", Scopa " + scopa); Console.Out.WriteLine("Primiera " + newTracker.PrimieraValue + " <- " + tracker.PrimieraValue); Console.Out.WriteLine("Denari " + newTracker.DenariCount + " <- " + tracker.DenariCount); Console.Out.WriteLine("Cards " + newTracker.CardCount + " <- " + tracker.CardCount); Console.Out.WriteLine("Cards Taken " + Card.ToString(newTracker.CardsTaken)); Console.Out.WriteLine("Trick " + Card.ToString(selectedTrick) + " with " + selectedCard + " := " + weight); return(weight); }
public TrickTracker GetPossibleScores(List <Card> cards, bool scopa) { return(trickTracker.GetPossibleScores(cards, scopa)); }