}//FIM ADD ESPECIE public static void ApagarEspecie() { if (ListaEspecies.Count <= 0) { Console.WriteLine("NAO EXISTEM ESPECIES NA LISTA"); Console.WriteLine("\n<ENTER PARA VOLTAR AO MENU"); Console.ReadLine(); Console.Clear(); MainClass.Menu(); } else { string especie; do { Console.WriteLine("QUAL A ESPECIE QUE DESEJA APAGAR?"); especie = Console.ReadLine(); if (verificaEspecieExiste(especie)) { foreach (Especies e in ListaEspecies) { string especieLista = e.GetID(); if (especieLista == especie) { if (GestorAnimais.verificaEspecie(especie)) { Console.WriteLine("EXISTEM ANIMAIS DESTA ESPECIE, A ESPECIE NAO PODE SER APAGADA"); break; } else { ListaEspecies.Remove(e); Console.WriteLine("ESPECIE REMOVIDA COM SUCESSO"); Console.WriteLine("\n<ENTER PARA VOLTAR AO MENU"); Console.ReadLine(); Console.Clear(); MainClass.Menu(); } } } } else { Console.WriteLine("NAO EXISTE ESSA ESPECIE NA LISTA DE ESPECIES"); } } while (!verificaEspecieExiste(especie)); } }//FIM APAGAR ESPECIE
public static void Menu() { int menu; do { Console.Clear(); string boasvindas = "BEM-VINDO AO ZOOLOGICO - a21270211"; Console.SetCursorPosition((Console.WindowWidth - boasvindas.Length) / 2, Console.CursorTop); Console.WriteLine(boasvindas); Console.WriteLine("\n1 - IMPRIMIR AREAS" + "\n2 - CRIAR AREA" + "\n3 - ELIMINAR AREA" + "\n\n4 - LISTAR TODAS ESPECIES" + "\n5 - LISTAR ESPECIES NO ZOO" + "\n6 - CRIAR ESPECIE" + "\n7 - ADD HABITATE A ESPECIE" + "\n8 - APAGAR ESPECIES" + "\n9 - APAGAR HABITATE A ESPECIE" + "\n\n10 - CRIAR ANIMAL" + "\n11 - IMPRIMIR ANIMAIS" + "\n12 - APAGAR ANIMAL" + "\n13 - NASCER ANIMAL" + "\n\nENTER - SAIR"); Console.Write("\n"); int.TryParse(Console.ReadLine(), out menu); switch (menu) { case 1: Console.Clear(); GestorAreas.ImprimirAreas(); break; case 2: Console.Clear(); GestorAreas.CriarArea(); break; case 3: Console.Clear(); GestorAreas.EliminarAreas(); break; case 4: Console.Clear(); GestorEspecies.ImprimirEspecies(); break; case 5: Console.Clear(); GestorAnimais.getEspecie(); break; case 6: Console.Clear(); GestorEspecies.CriarEspecie(); break; case 7: Console.Clear(); GestorEspecies.addHabitate(); break; case 8: Console.Clear(); GestorEspecies.ApagarEspecie(); break; case 9: Console.Clear(); GestorEspecies.ApagarHabitateEspecie(); break; case 10: Console.Clear(); GestorAnimais.CriarAnimal(); break; case 11: Console.Clear(); GestorAnimais.ImprimirAnimais(); break; case 12: Console.Clear(); GestorAnimais.EliminarAnimal(); break; case 13: Console.Clear(); GestorAnimais.NascerAnimal(); break; case 0: return; } } while (menu < 0 || menu > 2); }
}//FIM APAGAR ESPECIE public static void ApagarHabitateEspecie() { if (ListaEspecies.Count <= 0) { Console.WriteLine("NAO EXISTEM ESPECIES NA LISTA"); Console.WriteLine("\n<ENTER PARA VOLTAR AO MENU"); Console.ReadLine(); Console.Clear(); MainClass.Menu(); } else { string especie; int indexArea; do { Console.WriteLine("INSIRA O NOME DA ESPECIE"); especie = Console.ReadLine(); try { foreach (char c in especie) { if (char.IsDigit(c)) { int.TryParse(especie, out indexArea); especie = ListaEspecies[indexArea - 1].GetID(); } } } catch { Console.WriteLine("A ESPECIE NAO SE ENCONTRA NA LISTA"); } if (!verificaEspecieExiste(especie) && !int.TryParse(especie, out indexArea)) { Console.WriteLine("A ESPECIE NAO SE ENCONTRA NA LISTA"); } } while (!verificaEspecieExiste(especie)); Habitates nHabitate; do { Console.WriteLine("QUAL O HABITATE QUE DESEJA APAGAR?"); Enum.TryParse(Console.ReadLine(), out nHabitate); if (((int)(nHabitate)) < Enum.GetValues(typeof(Habitates)).Length) { if (verificaEspecieHabitateExiste(especie, nHabitate.ToString())) { if (GestorAnimais.verificaEspecie(especie)) { Console.WriteLine("ESSE HABITATE TEM UM ANIMAL ASSOCIADO"); break; } else { foreach (Especies e in ListaEspecies) { if (e.GetID() == especie) { ApagaHabitate(nHabitate); Console.WriteLine("HABITATE APAGADO"); Console.WriteLine("\n<ENTER PARA VOLTAR AO MENU"); Console.ReadLine(); Console.Clear(); MainClass.Menu(); } } } } else { Console.WriteLine("ESTA ESPECIE NAO TEM ESTE HABITATE"); } } else { Console.WriteLine("O HABITATE NAO EXISTE"); } } while (((int)(nHabitate)) > Enum.GetValues(typeof(Habitates)).Length || !(verificaEspecieHabitateExiste(especie, nHabitate.ToString()))); } }//FIM APAGAR HABITATE ESPECIE
}//FIM CRIAR ANIMAL public static void NascerAnimal() { Console.WriteLine("Quantos progenitores tem o animal (1 ou 2)?"); int.TryParse(Console.ReadLine(), out int nParentes); if (nParentes < 1 || nParentes > 2) { Console.WriteLine("Numero de parentes invalido. Registo de nasimento cancelado."); return; } // recolher a lista com o nome dos pais (1 ou 2) List <string> pais = new List <string>(); string pai = ""; do { for (int i = 0; i < nParentes; i++) { Console.Write("O nome do parente {0} -> ", i + 1); pai = Console.ReadLine(); if (GestorAnimais.verificaNomeNaLista(pai)) { pais.Add(pai); } else { i--; Console.WriteLine("Erro: o animal indicado não existe."); } } } while (!GestorAnimais.verificaNomeNaLista(pai)); // inicio do codigo para apanhar a localizacao dos pais e verificar se estao dentro da mesma area string localPais = ""; foreach (Animais a in ListaAnimais) { if (a.getNomeAnimal() == pais[0]) { localPais = a.getLocalizacaoAnimal(); } } if (pais.Count > 1) { foreach (Animais a in ListaAnimais) { if (a.getNomeAnimal() == pais[1]) { if (a.getLocalizacaoAnimal() != localPais) { Console.WriteLine("Os pais indicados encontram-se em localizacoes diferentes." + "\nRegisto de nascimento cancelado."); return; } } } } // inicio do codigo para apanhar a especie dos pais e verificar se sao da mesma especie string especiePais = ""; foreach (Animais a in ListaAnimais) { if (a.getNomeAnimal() == pais[0]) { especiePais = a.getEspecieAnimal(); } } if (pais.Count > 1) { foreach (Animais a in ListaAnimais) { if (a.getNomeAnimal() == pais[1]) { if (especiePais != a.getEspecieAnimal()) { Console.WriteLine("Os pais indicados sao de especies diferentes." + "\nRegisto de nascimento cancelado."); return; } } } } // recolher 20% do peso de cada pai -> peso do novo animal double pesoNovoAnimal = 0; foreach (Animais a in ListaAnimais) { foreach (string s in pais) { if (a.getNomeAnimal() == s) { pesoNovoAnimal += a.GetPeso() * 0.2; } } } string nomeNovoAnimal; do { Console.WriteLine("Insira o nome do animal que vai nascer:"); nomeNovoAnimal = Console.ReadLine(); if (GestorAnimais.verificaNomeNaLista(nomeNovoAnimal)) { Console.WriteLine("Já existe um animal com esse nome."); } } while (GestorAnimais.verificaNomeNaLista(nomeNovoAnimal) || nomeNovoAnimal.Length < 1); // criada lista de filhos vazia. o animal acabou de nascer, logo nao tem filhos. List <string> filhos = new List <string>(); Animais newAnimal = new Animais(nomeNovoAnimal, pesoNovoAnimal, especiePais, localPais, pais, filhos); ListaAnimais.Add(newAnimal); }
}//FIM CriarArea() public static void EliminarAreas() { int indexArea = 0; string nomeArea; do { do { Console.WriteLine("INDIQUE A ÁREA A ELIMINAR"); nomeArea = Console.ReadLine(); try { foreach (char c in nomeArea) { if (char.IsDigit(c)) { int.TryParse(nomeArea, out indexArea); nomeArea = ListaAreasDoZoo[indexArea - 1].getNomeArea(); } } } catch { Console.WriteLine("A ÁREA NÃO SE ENCONTRA NA AREAS DA LISTA"); } } while (!verificaAreaExiste(nomeArea)); if (verificaAreaExiste(nomeArea)) { indexArea = 1; foreach (AreasDoZoo a in ListaAreasDoZoo) { string area = a.getNomeArea(); if (area == nomeArea) { if (GestorAnimais.verificaExisteNaArea(nomeArea)) { Console.WriteLine("ESTA AREA TEM ANIMAIS E NAO PODE SER ELIMINADA"); break; } indexArea++; } } } else { Console.WriteLine("A ÁREA NÃO SE ENCONTRA NA AREAS DA LISTA"); } } while (verificaAreaExiste(nomeArea) == false); if (verificaAreaExiste(nomeArea)) { char valor; do { Console.Clear(); Console.WriteLine("TEM A CERTEZA QUE PRETENDE ELIMINAR ESTA AREA?\n"); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine(string.Format("{0,7} | {1,-15} | {2,6} | {3,7} | {4,-20} ", "ID", "HABITATE", "CAPAC.", "N.FRONT", "FRONTEIRAS")); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine(ListaAreasDoZoo[indexArea].ReturnAreasConsola()); Console.WriteLine("-----------------------------------------------------------------\n"); Console.WriteLine("Y/N?"); char.TryParse(Console.ReadLine(), out valor); } while (!(valor == 'y' || valor == 'Y' || valor == 'n' || valor == 'N')); if (valor == 'y' || valor == 'Y') { nomeArea = ListaAreasDoZoo[indexArea].getNomeArea(); eliminarFronteira(nomeArea); ListaAreasDoZoo.RemoveAt(indexArea); Console.WriteLine("{0} ELIMINADA COM SUCESSO", nomeArea); //REESCREVER NO FICHEIRO! StreamWriter writer = new StreamWriter("AreasDoZoo.txt"); foreach (AreasDoZoo area in ListaAreasDoZoo) { writer.WriteLine("{0}", area.ReturnAreas()); } writer.Close(); } else { Console.WriteLine("OPERAÇÃO CANCELADA"); } } Console.WriteLine("\n<ENTER PARA VOLTAR AO MENU"); Console.ReadLine(); Console.Clear(); MainClass.Menu(); }//FIM ELIMINAR AREAS