public void OnGameStarted(object sender, GameStartedEventArgs e) { Console.WriteLine("Welcome to BATTLESHIP!"); Console.WriteLine("Are you ready to begin? Press any key to start."); Console.ReadKey(); Console.Clear(); e.Board.Print(printer); while (true) { Console.WriteLine("\nEnter position of a shot, eg. B3."); WritePrompt(); var positionString = Console.ReadLine(); if (!UiPosition.TryParse(positionString, out var uiPosition)) { HandleInvalidInput(e.Board); continue; } e.Board.Shot(uiPosition.Position); } }
public static bool TryParse(string input, out UiPosition uiPosition) { input = input.Trim(); if (input.Length != 2 && input.Length != 3) { uiPosition = null; return(false); } var letter = char.ToUpper(input[0]); var stringNumber = input.Substring(1, input.Length - 1); if ('A' <= letter && letter <= 'J' && uint.TryParse(stringNumber, out var number) && 1 <= number && number <= 10) { var letterValue = (uint)(letter - 'A'); var position = new Position(number - 1, letterValue); uiPosition = new UiPosition(position); return(true); } uiPosition = null; return(false); }