public List <Shinobi> ObtenerShinobis() { Shinobi s = new Shinobi(); //instancia de shinobi para manejar objetos var lineas = ObtenerLineas("Lista.txt"); //jalas tu lista con un var para optimizar List <Shinobi> shinobis = new List <Shinobi>(); //creas lista de objetos foreach (var item in lineas) //foreach para buscar en la lista de strings { string[] datos = item.Split(','); //por cada elemento dentro de tu lsita creas un arreglo de cinco elementos, divididos por una coma shinobis.Add(new Shinobi { ID = int.Parse(datos[0]), Nombre = datos[1], Rango = datos[2], Elemento = int.Parse(datos[3]), Aldea = datos[4] }); //cada que llenes tu arreglo de 5 elementos, los conviertes en atributos del objeto y los agregas a la lista } return(shinobis); //devuelves la lista de objetos llenos, la cual es enviada al ctor y a su vez es global }
public Shinobi EditNinja(Shinobi s) //meetodo para cuando se acepte la edicion del objeto { try //en caso de error de sintaxis { Console.WriteLine("Seleccione con un numero el atributo a modificar:\n1.-Nombre\n2.-Rango\n3.-Elemento\n4.-Aldea"); switch (int.Parse(Console.ReadLine()))//con el numero se elige el atributo a modificar (solamente uno por vuelta) { case 1: Console.WriteLine("Ingrese un nuevo nombre: "); string nombre = Console.ReadLine(); s.Nombre = nombre; Console.WriteLine("Se ha modificado el Nombre."); break; case 2: Console.WriteLine("Ingrese un nuevo rango: "); string rango = Console.ReadLine(); s.Rango = rango; Console.WriteLine("Se ha modificado el Rango."); break; case 3: Console.WriteLine("Seleccione con un numero el nuevo elemento:\n1.- Elemento Aire\n2.- Elemento Rayo\n3.- Elemento Tierra\n4.- Elemento Agua\n5.- Elemento Fuego"); int elemento = int.Parse(Console.ReadLine()); s.Elemento = elemento; Console.WriteLine("Se ha modificado el Elemento."); break; case 4: Console.WriteLine("Ingrese la nueva aldea: "); string aldea = Console.ReadLine(); s.Aldea = aldea; Console.WriteLine("Se ha modificado la Aldea."); break; default: break; } Console.WriteLine("Presione ENTER para continuar"); Console.ReadKey(); return(s); //se devuelve el objeto modificado } catch (Exception exe) //en caso de error de sintaxis el objeto se devolvera sin cambios (por eso se llena una variable primero) { Console.WriteLine("Se ha detectado el error: {0}\nSe regresara al menu", exe.Message); Menu(); return(s); } }
public void DetailNinja() //metodo para detallar un objeto { try //en caso de que el usuario use sintaxis indebida { Console.Clear(); //limpias para remover el menu ShowNinjas(); //muestras lista para que el usuario sepa que busca Shinobi s = new Shinobi(); //instancias para llenar y desplegar objeto Console.WriteLine("Seleccione con un numero, el shinobi a detallar: "); int ninjaid = int.Parse(Console.ReadLine()); //usas este id como tu elemento buscador foreach (var item in Ninjas) //foreach para la busqueda { if (ninjaid == item.ID) //si el elemento aparece en tu lsita { s = item; //conviertes a ese elemento en tu objeto a desplegar } } string element = ""; //usamos un int en un atributo para no tener strings variados, asi generalizas los atributos a cosas especificas, como el status del to do list switch (s.Elemento) //con el switch asignamos a cada valor un string especifico { case 1: element = "Elemento Viento"; break; case 2: element = "Elemento Rayo"; break; case 3: element = "Elemento Tierra"; break; case 4: element = "Elemento Agua"; break; case 5: element = "Elemento Fuego"; break; } Console.Clear(); //limpiamos para desplegar el objeto Console.WriteLine("Nombre: {0}\nRango: {1}\nElemento: {2}\nAldea: {3}", s.Nombre, s.Rango, element, s.Aldea); //desplegamos todos los atributos de modo normal pero en vez de usar el atributo element usamos el string que acabamos de crear y llenar con el switch Console.WriteLine("\nSi desea modificar algun dato presione 1, en caso de querer volver a la lista presione 2."); int option = int.Parse(Console.ReadLine()); //le decimos al usuario si quiere editar o no, con un try catch por si hay un error en la sintaxis if (option == 1) //si dice que si modificaremos el objeto aqui { s = EditNinja(s); //el objeto elegido a ver, sera sustituido por su nueva version que sera enviada al metodo de cambio como sobrecarga, como diria thanos, use las gemas para destruir las gemas, something like that UpdateTxt(); //despues de modificar la lista se llama este metodo para actualizar el archivo txt Console.Clear(); //se limpia y se vuelve al menu Menu(); } else//si se niega a editar accedemos al menu de manera normal { Console.ReadKey(); Console.Clear(); Menu(); } } catch (Exception e) //en caso de excepcion se interrumpe la edicion del objeto { Console.WriteLine("Se ha detectado el error: {0}\nPresiona cualquier tecla para volver al menu", e.Message); Console.ReadKey(); Console.Clear(); Menu(); } }