/// <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!"); } }
/// <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()}"); }
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); }
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); } } }