public void PlayTurn(Player player)
        {
            PlayerGameState.StartTurn();
            UserInterface.TellUserStartingNewTurn(player);

            var dieArray = DieRoller.RollDie();

            PlayerGameState.DecrementRollsLeft();

            while (PlayerGameState.RollsAreLeftInTurn())
            {
                UserInterface.ShowDieRoll(dieArray);

                if (UserInterface.AskIfUserWantsToScoreDie(PlayerGameState.NumberRollsLeftInTurn))
                {
                    ChooseCategoryAndScoreDieRoll(dieArray);
                    break;
                }

                var rerollDieArray = UserInterface.AskDieToReroll(dieArray);

                dieArray = DieRoller.RerollDie(dieArray, rerollDieArray);
                PlayerGameState.DecrementRollsLeft();

                if (!PlayerGameState.RollsAreLeftInTurn())
                {
                    ChooseCategoryAndScoreDieRoll(dieArray);
                    break;
                }
            }
        }
Exemple #2
0
        public IEnumerable <TermResult> GetResults(IDieRoller dieRoller)
        {
            IEnumerable <TermResult> results =
                from i in Enumerable.Range(0, Multiplicity)
                select new TermResult
            {
                Scalar = Scalar,
                Value  = dieRoller.RollDie(Sides),
                Type   = "d" + Sides
            };

            return(results.OrderByDescending(d => d.Value).Take(Choose));
        }