Beispiel #1
0
        /// <summary>
        /// Main method to get the scores
        /// </summary>
        /// <param name="currentScore"></param>
        /// <param name="action"></param>
        public void GetScoreByAction(ScoreboardModel currentScore, ActionType action)
        {
            var errors = validateInput(currentScore);

            if (errors.Count > 0)
            {
                throw new Exception(string.Join(", ", errors));
            }
            if (action == ActionType.Player1WinsAPoint)
            {
                if (currentScore.player1Score == "40" && currentScore.player2Score == "A")
                {
                    currentScore.player2Score = "40";
                }
                else
                {
                    currentScore.player1Score = GetScore(currentScore.player1Score, currentScore.player2Score);
                }
            }
            else if (action == ActionType.Player2WinsAPoint)
            {
                if (currentScore.player2Score == "40" && currentScore.player1Score == "A")
                {
                    currentScore.player1Score = "40";
                }
                else
                {
                    currentScore.player2Score = GetScore(currentScore.player2Score, currentScore.player1Score);
                }
            }
            else
            {
                throw new Exception($"Selected action ({action.ToString()}) is not recognized!");
            }
        }
 /// <summary>
 /// Main method to get the scores
 /// </summary>
 /// <param name="currentScore"></param>
 /// <param name="action"></param>
 public void GetScoreByAction(ScoreboardModel currentScore, ActionType action)
 {
     if (action == ActionType.Player1WinsAPoint)
     {
         if (currentScore.player1Score == "40" && currentScore.player2Score == "A")
         {
             currentScore.player2Score = "40";
         }
         else
         {
             currentScore.player1Score = GetScore(currentScore.player1Score, currentScore.player2Score);
         }
     }
     else if (action == ActionType.Player2WinsAPoint)
     {
         if (currentScore.player2Score == "40" && currentScore.player1Score == "A")
         {
             currentScore.player1Score = "40";
         }
         else
         {
             currentScore.player2Score = GetScore(currentScore.player2Score, currentScore.player1Score);
         }
     }
     else
     {
         throw new Exception($"Selected action ({action.ToString()}) is not recognized!");
     }
 }
Beispiel #3
0
 /// <summary>
 /// Gets the score in the same format presented in the example in the PDF
 /// </summary>
 /// <param name="currentScore"></param>
 /// <returns></returns>
 public string GetScoreString(ScoreboardModel currentScore)
 {
     if (currentScore.player1Score.Contains("Game"))
     {
         return(currentScore.player1Score);
     }
     else if (currentScore.player2Score.Contains("Game"))
     {
         return(currentScore.player2Score);
     }
     return($"{currentScore.player1Score.ToString()}-{currentScore.player2Score.ToString()}");
 }
Beispiel #4
0
        public List <string> validateInput(ScoreboardModel currentScore)
        {
            var errorsMessage = new List <string>();

            if (string.IsNullOrEmpty(currentScore.player1Name) || string.IsNullOrEmpty(currentScore.player2Name))
            {
                errorsMessage.Add("You must enter name for both players!");
            }
            if (!IsValidScore(currentScore.player1Score))
            {
                errorsMessage.Add($"You entered invalid score for {currentScore.player1Name}. Allowed input (0, 15, 30, 40, A).");
            }
            if (!IsValidScore(currentScore.player2Score))
            {
                errorsMessage.Add($"You entered invalid score for {currentScore.player2Name}. Allowed input (0, 15, 30, 40, A).");
            }
            if (!IsValidScore(currentScore.player2Score, currentScore.player1Score))
            {
                errorsMessage.Add($"Both players cannot have a score of (A) at the same time.");
            }
            return(errorsMessage);
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            while (true)
            {
                string       player1Name  = "";
                string       player2Name  = "";
                string       player1Score = "";
                string       player2Score = "";
                ScoreService scoreService = new ScoreService();

                Console.WriteLine("Enter player 1 name: ");
                player1Name = Console.ReadLine();
                while (string.IsNullOrEmpty(player1Name))
                {
                    Console.WriteLine("You must enter a name!");
                    player1Name = Console.ReadLine();
                }

                Console.WriteLine("Enter player 1 score: ");
                player1Score = Console.ReadLine().ToUpper();
                while (!scoreService.IsValidScore(player1Score))
                {
                    Console.WriteLine("You must enter a valid score valid options are 0, 15, 30, 40, and A");
                    player1Score = Console.ReadLine().ToUpper();
                }

                Console.WriteLine("Enter player 2 name: ");
                player2Name = Console.ReadLine();
                while (string.IsNullOrEmpty(player2Name))
                {
                    Console.WriteLine("You must enter a name!");
                    player2Name = Console.ReadLine();
                }

                Console.WriteLine("Enter player 2 score: ");
                player2Score = Console.ReadLine().ToUpper();
                while (!scoreService.IsValidScore(player2Score, player1Score))
                {
                    Console.WriteLine("You must enter a valid score valid options are 0, 15, 30, 40, and A");
                    player2Score = Console.ReadLine().ToUpper();
                }

                Console.WriteLine($"Enter the number 0 if {player1Name} scored a point.");
                Console.WriteLine($"Or Enter the number 1 if {player2Name} scored a point.");
                ActionType action;
                string     strAction = Console.ReadLine();
                while (!Enum.TryParse(strAction, out action))
                {
                    Console.WriteLine("Your input was not valid:");
                    Console.WriteLine($"Enter the number 0 if {player1Name} scored a point.");
                    Console.WriteLine($"Or Enter the number 1 if {player2Name} scored a point.");
                    strAction = Console.ReadLine();
                }

                try
                {
                    ScoreboardModel currentScore = new ScoreboardModel(player1Name, player2Name, player1Score, player2Score);
                    scoreService.GetScoreByAction(currentScore, action);
                    Console.WriteLine(scoreService.GetScoreString(currentScore));
                    Console.ReadKey();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }