static bool HandleInput(string com, Player p, Map m, out bool quit) { // Creamos un bool que sera devuelto mas tarde bool leido = true; // Ponemos a false quit para que devuelva siempre false excepto si lo pide quit = false; // Pongo este metodo para que el jugador no se trabe con los comandos al poner mayusculas o minusculas com = com.ToLower(); switch (com) { // Para cada direccion hacemos mover el personaje con el metodo // en el caso de que se pueda mover te da la informacion de la sala a la que vas // en el caso contrario te da un mensaje donde pone que no se puede mover en esa direccion case "go north": case "go n": if (p.Move(m, Direction.North)) { InfoPlace(m, p.GetPosition()); } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("You can't choose this direction."); Console.ResetColor(); } break; case "go south": case "go s": if (p.Move(m, Direction.South)) { InfoPlace(m, p.GetPosition()); } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("You can't choose this direction."); Console.ResetColor(); } break; case "go east": case "go e": if (p.Move(m, Direction.East)) { InfoPlace(m, p.GetPosition()); } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("You can't choose this direction."); Console.ResetColor(); } break; case "go West": case "go w": if (p.Move(m, Direction.West)) { InfoPlace(m, p.GetPosition()); } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("You can't choose this direction."); Console.ResetColor(); } break; // Escribe la información del inventario case "inventory": Console.WriteLine(p.GetInventoryInfo(m)); break; // Escribe la información del jugador case "me": Console.WriteLine(p.GetPlayerInfo()); break; // Escribe los items que hay en la sala case "look": Console.WriteLine(m.GetInfoItemsInRoom(p.GetPosition())); break; // Escribe los comandos que puede utilizar el jugador case "help": EscribirComandos(); // He implementado un metodo para escribir los comandos break; // Escribe la descripcion de laala case "info": InfoPlace(m, p.GetPosition()); break; // Sale del juego devolviendo true el valor de quit case "quit": quit = true; break; // Esto es opcional pero he puesto esto por si el jugador quiere limpiar la consola case "clear": Console.Clear(); break; // En el caso de que no se haya escrito ningun comando bien devuelve false default: leido = false; break; } // Como aun quedan dos comandos pero estos son con los items los leo por separado if (!leido) { // Queremos saber si el jugador ha escrito pick or eat string[] pickEat = com.Split(' '); // En el caso de pick if (pickEat[0] == "pick") { // Intenta ejecutar el metodo try { // Envio com, en vez de pickEat[1], para que salte el error dentro del // metodo en el caso de que solo haya escrito "pick" sin nada detras p.PickItem(m, com); // Escribe la informacion del item Console.WriteLine(m.PrintItemInfo(m.FindItemByName(pickEat[1]))); } // En el caso de que salte un error lo escribe en pantalla catch (Exception e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(e.Message); Console.ResetColor(); } // Ponemos que se ha leido ya que se ha entrado en el comando leido = true; } // En el caso de eat else if (pickEat[0] == "eat") { // Intenta ejecutar el metodo try { // Envio com, en vez de pickEat[1], para que salte el error dentro del // metodo en el caso de que solo haya escrito "eat" sin nada detras p.EatItem(m, com); } // En el caso de que salte un error lo escribe en pantalla catch (Exception e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(e.Message); Console.ResetColor(); } // Ponemos que se ha leido ya que se ha entrado en el comando leido = true; } // En el caso de drop else if (pickEat[0] == "drop") { // Intenta ejecutar el metodo try { // Envio com, en vez de pickEat[1], para que salte el error dentro del // metodo en el caso de que solo haya escrito "drop" sin nada detras p.dropItem(m, com); Console.Write("You drop the item " + pickEat[1] + ". "); Console.WriteLine(m.PrintItemInfo(m.FindItemByName(pickEat[1]))); } // En el caso de que salte un error lo escribe en pantalla catch (Exception e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(e.Message); Console.ResetColor(); } // Ponemos que se ha leido ya que se ha entrado en el comando leido = true; } } // Devuelverue si se ha leido un comando false en el caso de que no se haya leido nada return(leido); }