Пример #1
0
 bool IsYahtzeeBonus(YahtzeeDice dice)
 {
     if (!dice.IsSetOf(5) || yahtzeeCount == 0)
     {
         return(false);
     }
     if (!yahtzeeBonus.Used || yahtzeeBonus.Score > 0)
     {
         return(true);
     }
     return(false);
 }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }