//Carregamento do ficheiro da AreasDoZoo public static void FicheiroAreas() { try { string[] ArrayAreas = File.ReadAllLines("AreasDoZoo.txt"); //Percorrer todo o array for (int i = 0; i < ArrayAreas.Length; i++) { //Transformar cada index do array numa string string LinhaEmStrings = ArrayAreas[i]; //Indexar cada palavra separadamente num array, retirando os espaços string[] InfoArea = LinhaEmStrings.Split(' '); //Atribuir cada index ao respetivo parâmetro das AreasDoZoo string ID = InfoArea[0]; Enum.TryParse(InfoArea[1], out Habitates habitat); Double.TryParse(InfoArea[2], out double capacidade); int.TryParse(InfoArea[3], out int nFronteiras); if (nFronteiras > 0) { ListaFronteiras = new List <string>(); for (int j = 4; j < InfoArea.Length; j++) { string nomeFronteita = InfoArea[j]; ListaFronteiras.Add(nomeFronteita); } } //Criar nova AreaDoZoo AreasDoZoo NovaArea = new AreasDoZoo(ID, habitat, capacidade, ListaFronteiras); //Adicionar "NovaArea" á ListaFronteiras ListaAreasDoZoo.Add(NovaArea); } } catch { Console.WriteLine("ERRO AO CARREGAR INFORMAÇÕES DO ZOO"); } }//Fim FicheiroAreas
//Criar NovaArea======================================================== public static void CriarArea() { Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine(string.Format("\t\t\tCRIAR NOVAS AREAS")); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine(string.Format("{0,7} | {1,-15} | {2,6} | {3,7} | {4,-20} ", "ID", "HABITATE", "CAPAC.", "N.FRONT", "FRONTEIRAS")); Console.WriteLine("-----------------------------------------------------------------"); foreach (AreasDoZoo area in ListaAreasDoZoo) { Console.WriteLine(area.ReturnAreasConsola()); } Console.WriteLine("-----------------------------------------------------------------"); //VERIFICA A ULTIMA LETRA DA ULTIMA AREA CRIADA E INCREMENTA int numeroAreas = ListaAreasDoZoo.Count; string ID = ListaAreasDoZoo[numeroAreas - 1].getNomeArea(); char.TryParse(ListaAreasDoZoo[numeroAreas - 1].getNomeArea().Remove(0, ID.Length - 1), out char ultimoChar); if (ultimoChar == 'Z' || ultimoChar == 'z') { ultimoChar = 'A'; ID += ultimoChar; } else { ID = ID.Remove(ID.Length - 1) + ++ultimoChar; } //HABITATE Habitates nHabitate; do { Console.WriteLine("TIPO DE HABITATE:"); Enum.TryParse(Console.ReadLine(), out nHabitate); if (nHabitate <= 0 || ((int)(nHabitate)) > Enum.GetValues(typeof(Habitates)).Length) { Console.WriteLine("O HABITATE NAO EXISTE, INSIRA UM HABITATE VALIDO"); } } while (nHabitate <= 0 || nHabitate == 0 || ((int)(nHabitate)) > Enum.GetValues(typeof(Habitates)).Length); //PESO MÁXIMO DA ÁREA Console.WriteLine("CAPACIDADE:"); double capacidade; do { double.TryParse(Console.ReadLine(), out capacidade); if (capacidade <= 0) { Console.WriteLine("A CAPACIDADE NECESSITA DE SER POSITIVA"); } } while (capacidade <= 0); //QUANTIDADE DE FRONTEIRAS int nFronteiras; do { Console.WriteLine("QUANTIDADE DE FRONTEIRAS:"); int.TryParse(Console.ReadLine(), out nFronteiras); if (nFronteiras > ListaAreasDoZoo.Count && ListaAreasDoZoo.Count <= 3) { int nAreas = ListaAreasDoZoo.Count; Console.WriteLine("O NUMERO DE AREAS É MENOR QUE O NÚMERO DE FRONTEIRAS REQUERIDAS\n" + "\nNUMERO DE AREAS DISPONIVEIS -- > {0}\n", nAreas); } if (nFronteiras <= 0 || nFronteiras > 3) { Console.WriteLine("O NUMERO DE FRONTEIRAS NECESSITA ESTAR ENTRE 1 E 3\n"); } } while (nFronteiras <= 0 || nFronteiras > 3 || nFronteiras > ListaAreasDoZoo.Count); //FRONTEIRAS ListaFronteiras = new List <string>(); for (int i = 0; i < nFronteiras; i++) { Console.WriteLine("INSIRA A {0}ª ÁREA ", i + 1); int.TryParse(Console.ReadLine(), out int fronteira); while (fronteira > ListaAreasDoZoo.Count || fronteira <= 0) { Console.WriteLine("A ÁREA NAO EXISTE NA LISTA DE AREAS, INSIRA UMA FRONTEIRA VALIDA"); Console.WriteLine("INSIRA A {0}ª ÁREA ", i + 1); int.TryParse(Console.ReadLine(), out fronteira); } string nomeFronteira = ListaAreasDoZoo[fronteira - 1].getNomeArea(); if (maxFronteiras(nomeFronteira)) { Console.WriteLine("ESSE AREA JA TEM O LIMITE FRONTEIRAS"); i--; } else if (ListaFronteiras.Contains(nomeFronteira)) { Console.WriteLine("JÁ INSERIU ESSA FRONTEIRA, ESCOLHA OUTRA FRONTEIRA VÁLIDA"); i--; } else { ListaFronteiras.Add(nomeFronteira); } } //Cria novo objeto de AreaDoZoo AreasDoZoo NovaArea = new AreasDoZoo(ID, nHabitate, capacidade, ListaFronteiras); //Adiciona NovaArea Á ListaAreasDoZoo ListaAreasDoZoo.Add(NovaArea); //Escreve para ficheiro a NovaArea criada Console.WriteLine("\nNOVA AREA CRIADA:\n{0}", NovaArea.ReturnAreas()); StreamWriter EscreveAreas = File.AppendText("AreasDoZoo.txt"); EscreveAreas.WriteLine("{0}", NovaArea.ReturnAreas()); EscreveAreas.Close(); Console.WriteLine("\n<ENTER PARA VOLTAR AO MENU"); Console.ReadLine(); Console.Clear(); MainClass.Menu(); }//FIM CriarArea()