bool IsWild(YahtzeeDice dice) { if (!dice.IsSetOf(5) || yahtzeeCount == 0) { return(false); } switch (dice.Sum( ) / 5) { case 1: return(ones.Used); case 2: return(twos.Used); case 3: return(threes.Used); case 4: return(fours.Used); case 5: return(fives.Used); case 6: return(sixes.Used); default: return(false); } }
public bool TryScore(YahtzeeDice dice, string lineCode) { bool ok = false; switch (lineCode) { case "1s": ok = ones.TryScore( dice.Sum(1)); break; case "2s": ok = twos.TryScore( dice.Sum(2)); break; case "3s": ok = threes.TryScore( dice.Sum(3)); break; case "4s": ok = fours.TryScore( dice.Sum(4)); break; case "5s": ok = fives.TryScore( dice.Sum(5)); break; case "6s": ok = sixes.TryScore( dice.Sum(6)); break; case "3k": ok = threeOfAKind.TryScore( dice.IsSetOf(3) ? dice.Sum( ) : 0); break; case "4k": ok = fourOfAKind.TryScore( dice.IsSetOf(4) ? dice.Sum( ) : 0); break; case "fh": ok = fullHouse.TryScore( IsWild(dice) || dice.IsFullHouse( ) ? 25 : 0); break; case "sm": ok = smallStraight.TryScore( IsWild(dice) || dice.IsRunOf(4) ? 30 : 0); break; case "lg": ok = largeStraight.TryScore( IsWild(dice) || dice.IsRunOf(5) ? 40 : 0); break; case "ya": ok = yahtzee.TryScore( dice.IsSetOf(5) ? 50 : 0); break; case "ch": ok = chance.TryScore( dice.Sum( )); break; default: break; } if (ok) { if (dice.IsSetOf(5)) { if (yahtzeeCount == 0 && lineCode != "ya") { yahtzeeBonus.Score = 0; } if (IsYahtzeeBonus(dice)) { yahtzeeBonus.Score += 100; } yahtzeeCount++; } else { if (yahtzeeCount == 0 && lineCode == "ya") { yahtzeeBonus.Score = 0; } } } return(ok); }