public static Mostro CreazioneMostroLocale()
        {
            bool check;
            var  classeScelta = new Classe()
            {
            };
            var armaScelta = new Arma()
            {
            };
            var livelloScelto = new Livello()
            {
            };
            var classi = RegoleGioco.ClassiPerMostro();

            //SCELTA CLASSE
            do
            {
                Console.WriteLine("Ecco le classi disponibili: ");
                for (int i = 1; i <= classi.Count; i++)
                {
                    Console.WriteLine(i + " - " + classi[i - 1].ToString());
                }
                Console.WriteLine("Per scegliere una classe digita il numero corrispondente");

                string scelta = Console.ReadLine();
                check = Int32.TryParse(scelta, out int res);
                int indiceClasse = res - 1;

                //Try-Catch mi serve nel caso venga inserito un intero non valido (non tra le opzioni)
                try
                {
                    classeScelta = classi[indiceClasse];
                }
                catch (Exception)
                {
                    Console.WriteLine("Scelta non valida");
                    check = false;
                }
            } while (check == false);

            //SCELTA NOME
            Console.WriteLine("\nScrivi il nome del nuovo {0}", classeScelta.nomeClasse);
            string nomeMostro;

            do
            {
                nomeMostro = Console.ReadLine().Trim();

                //Caso nome vuoto (dato che ho usato trim(), questo caso comprende anche: viene inserito solo l'invio o solo spazi)
                if (nomeMostro.Length == 0)
                {
                    Console.WriteLine("\nNome non valido. Per favore, scrivi un altro nome");
                    check = false;
                }
            } while (check == false);


            //SCELTA ARMA
            var armi = RegoleGioco.ArmiPerClasse(classeScelta);

            do
            {
                Console.WriteLine("Ecco le armi disponibili per {0}:", nomeMostro);

                for (int i = 1; i <= armi.Count; i++)
                {
                    Console.WriteLine(i + " - " + armi[i - 1].NomeArma + " Punti Danno: " + armi[i - 1].PuntiDanno);
                }
                Console.WriteLine("Per scegliere un'arma digita il numero corrispondente");

                string scelta = Console.ReadLine();
                check = Int32.TryParse(scelta, out int res);
                int indiceArma = res - 1;

                //Try-Catch mi serve nel caso venga inserito un intero non valido (non tra le opzioni)
                try
                {
                    armaScelta = armi[indiceArma];
                }
                catch (Exception)
                {
                    Console.WriteLine("Scelta non valida");
                    check = false;
                }
            } while (check == false);

            //SCELTA LIVELLO
            do
            {
                Console.WriteLine("Quale livello vuoi assegnare?");

                for (int i = 1; i <= livelli.Count; i++)
                {
                    Console.WriteLine(i + " - Livello " + livelli[i - 1].Numero + "\tPunti Vita: " + livelli[i - 1].PuntiVita);
                }
                Console.WriteLine("Per scegliere un livello digita il numero corrispondente");

                string scelta = Console.ReadLine();
                check = Int32.TryParse(scelta, out int res);
                int indiceLivello = res - 1;

                //Try-Catch mi serve nel caso venga inserito un intero non valido (non tra le opzioni)
                try
                {
                    livelloScelto = livelli[indiceLivello];
                }
                catch (Exception)
                {
                    Console.WriteLine("Scelta non valida");
                    check = false;
                }
            } while (check == false);


            var mostro = new Mostro(nomeMostro, classeScelta.nomeClasse, armaScelta, livelloScelto)
            {
            };

            Console.WriteLine("Hai creato un mostro:");
            Console.WriteLine(mostro.ToString());

            return(mostro);
        }
        public static Eroe CreazioneEroeLocale(Giocatore giocatore)
        {
            var classi       = RegoleGioco.ClassiPerEroe();
            var classeScelta = new Classe()
            {
            };
            var armaScelta = new Arma()
            {
            };
            bool check;

            do
            {
                Console.WriteLine("Ecco le classi disponibili: ");
                for (int i = 1; i <= classi.Count; i++)
                {
                    Console.WriteLine(i + " - " + classi[i - 1].ToString());
                }
                Console.WriteLine("Per scegliere una classe digita il numero corrispondente");

                string scelta = Console.ReadLine();
                check = Int32.TryParse(scelta, out int res);
                int indiceClasse = res - 1;

                //Se il cast è andato a buon fine
                if (check == true)
                {
                    //Try-Catch mi serve nel caso venga inserito un intero non valido (non tra le opzioni)
                    try
                    {
                        classeScelta = classi[indiceClasse];
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Scelta non valida");
                        check = false;
                    }
                }
            } while (check == false);

            //NOME EROE
            Console.WriteLine("\nScrivi il nome del tuo eroe");
            string nomeEroe;

            do
            {
                //Senza spazi a inizio e fine nome
                nomeEroe = Console.ReadLine().Trim();

                //Controllo nome unico
                check = RegoleGioco.ControlloNomeEroeUnico(nomeEroe);

                //Caso nomeEroe già esistente
                if (check == false)
                {
                    Console.WriteLine("\nSpiacenti, {0} è già in uso. Per favore, scrivi un altro nome", nomeEroe);
                }
                //Caso nome vuoto (dato che ho usato trim(), questo caso comprende anche: viene inserito solo l'invio o solo spazi)
                else if (nomeEroe.Length == 0)
                {
                    Console.WriteLine("\nNome non valido. Per favore, scrivi un altro nome");
                    check = false;
                }
            } while (check == false);

            //ARMA
            do
            {
                Console.WriteLine("Ecco le armi disponibili per il tuo eroe:");

                var armi = RegoleGioco.ArmiPerClasse(classeScelta);

                for (int i = 1; i <= armi.Count; i++)
                {
                    Console.WriteLine(i + " - " + armi[i - 1].NomeArma);
                }
                Console.WriteLine("Per scegliere un'arma digita il numero corrispondente");

                string scelta = Console.ReadLine();
                check = Int32.TryParse(scelta, out int res);
                int indiceArma = res - 1;

                //Se il cast è andato bene
                if (check == true)
                {
                    //Try-Catch mi serve nel caso venga inserito un intero non valido (non tra le opzioni)
                    try
                    {
                        armaScelta = armi[indiceArma];
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Scelta non valida");
                        check = false;
                    }
                }
            } while (check == false);

            var eroe = new Eroe(nomeEroe, classeScelta.nomeClasse, armaScelta, giocatore.Nome)
            {
            };

            Console.WriteLine("Hai creato un eroe:");
            Console.WriteLine(eroe.ToString());

            return(eroe);
        }