public string GetUserInput(string userInput) { string message = string.Empty; if (userInput.Length > 3 || userInput.Length == 1 || string.IsNullOrEmpty(userInput)) { throw new ArgumentException(); } string userInputX = userInput.Substring(0, Index).ToUpper(); char.TryParse(userInputX, out char x); string userInputY = userInput.Substring(Index, userInput.Length - Index); int.TryParse(userInputY, out int y); if (!BattleshipExtensions.IsSegmentWithInGridRange(x, y)) { throw new ArgumentException(); } var segment = segmentation.GetSegment(x, y); if (segment.Character == Miss || segment.Character == Hit) { return(CoordinateTriedMessage); } Coordinate coordinate = new Coordinate(x, y); if (segment.Ship == null) { segment.IsEmpty = false; segment.Character = Miss; segmentation.UpdateSegment(coordinate, segment); message = MissMessage; playerStats.Miss++; } if (segment.Ship != null) { segment.IsEmpty = false; segment.Character = Hit; segment.Ship.ShipHit++; segmentation.UpdateSegment(coordinate, segment); message = HitMessage; playerStats.Hit++; if (segment.Ship.IsShipSunk) { playerStats.Sunk++; message = SunkMessage; } } return(message); }