private int GetTricksTaken() { int count = _tricks.Sum(t => t.Winner.GetSide() == Declarer.GetSide() ? 1 : 0); return(count - 6); //Todo: limit to positive numbers ??? }
public override string ToString() { //Declarers (x) made x tricks, defenders (y) made y tricks. //The contract was (not) made by/plus x/y tricks under/over // StringBuilder sb = new StringBuilder(); sb.Append(string.Format("Declarers ({0}) made {1} trick{2}. ", Declarer.GetSide(), TricksTaken, TricksTaken == 1 ? "" : "s")); sb.AppendLine(string.Format("Defenders ({0}) made {1} trick{2}.", Declarer.GetSide().OtherSide(), TricksDefeated, TricksDefeated == 1 ? "" : "s")); if (MadeContract) { if (TricksOverContract == 0) { sb.AppendLine(string.Format("The contract({0}) was made exactly.", Contract)); } else { sb.AppendLine(string.Format("The contract({0}) was made with {1} overtrick{2}.", Contract, TricksOverContract, TricksOverContract == 1 ? "" : "s")); } } else { sb.AppendLine(string.Format("The contract({0}) was defeated by {1} undertrick{2}.", Contract, TricksUnderContract, TricksUnderContract == 1 ? "" : "s")); } //FIXME - display better, give totals, make sure it is correct sb.AppendLine(string.Format("Points for Declarer: Contract:{0} OverTricks:{1} Level Bonus:{2} Insults:{3}", ContractScore, GetOverTrickPoints(), GetLevelBonus(), GetInsult())); sb.AppendLine(string.Format("Points for Defender {0}", GetPenalties())); return(sb.ToString()); }