/// <summary> /// Получает содержимое файла по указанному пути, и читает из него сведения о городе. /// Если не удалось прочитать, то возвращает null. /// </summary> /// <param name="inputFilePath">Путь ко входному файлу, откуда нужно прочитать информацию о городе.</param> /// <returns>Данные о городе, либо null, если не удалось прочитать.</returns> private static CityInputInfo ReadCityInputInfoFromFile(string inputFilePath) { if (!File.Exists(inputFilePath)) { Console.WriteLine("Не удается найти входной файл по указанному пути."); return(null); } string inputFileContent; try { inputFileContent = File.ReadAllText(inputFilePath); } catch (Exception exception) { Console.WriteLine(exception.Message); return(null); } CityInputInfo cityInputInfo = CityInputInfo.Deserialize(inputFileContent); if (cityInputInfo == null) { Console.WriteLine("Не удалось обработать файл."); return(null); } return(cityInputInfo); }
/// <summary> /// Осуществляет «постройку» города, исходя из полученной в <paramref name="cityInputInfo"/> информации. /// </summary> /// <param name="cityInputInfo">Информация о городе, который нужно «построить».</param> /// <returns>Объект «построенного» города.</returns> private static City BuildCity(CityInputInfo cityInputInfo) { City city = new City(cityInputInfo.TopLeftCorner, cityInputInfo.BottomRightCorner, new RandomBuilder()); foreach (var point2DPair in cityInputInfo.Roads) { city.AddRoad(new Road(point2DPair.Item1, point2DPair.Item2)); } return(city); }
public static void Main(string[] args) { string inputFilePath; if (args.Length < 2) { Console.WriteLine("Пожалуйста, укажите путь к входному файлу."); inputFilePath = Console.ReadLine(); } else { inputFilePath = args[1]; } CityInputInfo cityInputInfo = ReadCityInputInfoFromFile(inputFilePath); if (cityInputInfo == null) { return; } City city = BuildCity(cityInputInfo); Console.WriteLine("Городские дороги: "); foreach (Road road in city.Roads) { Console.WriteLine(road.ToString()); } while (true) { if (!TryAskStartPoint(city, out var startPoint)) { return; } if (!TryAskEndPoint(out var institutionType)) { return; } CityPathInfo pathInfo = Finder.FindPathTo(city, startPoint, institutionType); if (pathInfo.IsEmptyPath()) { Console.WriteLine("Не удалось найти путь."); return; } Console.WriteLine($"Путь найден: {pathInfo}. Общая продолжительность {pathInfo.TotalLength}"); Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } }