//METODI richiamati nel Menu Principale

        //Dato un eroe
        //Gestisce la partita dell'eroe
        public static void Partita(Eroe eroePartita)
        {
            Stopwatch watch = new Stopwatch();

            //Parte il watch
            watch.Start();
            bool continua;

            do
            {
                //Sorteggio mostro per la battaglia
                var mostro = RegoleGioco.SorteggioMostro(eroePartita);
                //Battaglia che mi restituisce l'eroe
                eroePartita = Battaglia(eroePartita, mostro);

                //Se l'eroe è morto, lo elimino dal database e termina la partita
                if (eroePartita.PuntiVita <= 0)
                {
                    RegoleGioco.EliminaEroe(eroePartita);
                    break;
                }

                //Salvo l'attuale livello dell'eroe
                int livello = eroePartita.Livello;

                //Check per il passaggio di livello viene fatto solo se il livello attuale è diverso
                //dal massimo livello disponibile (questo copre anche il caso in cui un eroe abbia già vinto)
                if (livello != livelli[livelli.Count - 1].Numero)
                {
                    eroePartita = RegoleGioco.CheckPassaggioDiLivello(eroePartita, livelli);
                }

                //Se il livello è cambiato
                if (livello != eroePartita.Livello)
                {
                    Console.WriteLine("Complimenti! Sei passato al livello {0}! \n Ora hai {1} punti vita!", eroePartita.Livello, eroePartita.PuntiVita);
                }

                if (eroePartita.PuntiAccumulati >= 200)
                {
                    Console.WriteLine("Complimenti!! HAI VINTO!!!");
                    Console.WriteLine("Puoi continuare a giocare con il tuo eroe, ma non potrai più salire di livello");
                }

                //Menu fine battaglia
                continua = ContinuaPartita(eroePartita);
            }while (continua == true);
            watch.Stop();
            int milliSecondi = (int)watch.ElapsedMilliseconds;

            if (eroePartita.PuntiVita > 0)
            {
                RegoleGioco.AggiornaStatistica(eroePartita, milliSecondi);
            }
        }
        //MENU PRINCIPALE
        public static bool MenuGiocatore(Giocatore giocatore)
        {
            bool check = true;

            do
            {
                Console.WriteLine("\n\n-----------------------------------");
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("\nMENU PRINCIPALE");
                Console.ResetColor();

                //Giocatore utente
                Console.WriteLine("1 - Creare un nuovo eroe");
                Console.WriteLine("2 - Continuare l'avventura");
                Console.WriteLine("3 - Elimina un eroe");
                Console.WriteLine("4 - Vedere le statistiche di gioco");

                //Giocatore Admin
                if (giocatore.Ruolo == "Admin")
                {
                    Console.WriteLine("5 - Creare un nuovo mostro");
                }

                Console.WriteLine("\nq - Uscire dal gioco\n");
                Console.WriteLine("-----------------------------------");


                string key = Console.ReadLine();

                Console.WriteLine("\n");

                switch (key)
                {
                case "1":
                    //Creazione eroe
                    var nuovoEroe = CreazioneEroeLocale(giocatore);
                    RegoleGioco.CreaEroe(nuovoEroe);
                    Console.WriteLine("L'avventura ha inizio!");
                    Partita(nuovoEroe);
                    return(false);

                case "2":
                    //Scelta eroe per la partita
                    var eroePartita = SceltaEroe(giocatore);
                    //Se non ci sono eroi, torna al menu principale
                    if (eroePartita == null)
                    {
                        return(false);
                    }
                    Console.WriteLine("L'avventura continua!");
                    //Partita
                    Partita(eroePartita);
                    return(false);

                case "3":
                    //Scelta eroe da eliminare
                    var eroeDaEliminare = SceltaEroe(giocatore);
                    //Se non ci sono eroi da eliminare, esce/torna al menu principale
                    if (eroeDaEliminare == null)
                    {
                        break;
                    }
                    RegoleGioco.EliminaEroe(eroeDaEliminare);
                    Console.WriteLine($"{eroeDaEliminare.Nome} è stato eliminato.");
                    return(EsciOMenuPrincipale());

                case "4":
                    //Statistiche
                    if (giocatore.Ruolo == "Admin")
                    {
                        SceltaStatistiche();
                    }
                    else
                    {
                        StatistichePerUtente(giocatore);
                    }
                    return(EsciOMenuPrincipale());

                case "5":
                    //Crea mostro
                    //if-else mi serve per controllare che il 3 sia stato digitato perchè era
                    //uscito come opzione nel menu e non perchè è stato digitato a caso da un utente
                    if (giocatore.Ruolo == "Admin")
                    {
                        var newMostro = CreazioneMostroLocale();
                        RegoleGioco.CreaMostro(newMostro);
                        return(EsciOMenuPrincipale());
                    }
                    else
                    {
                        Console.WriteLine("Scelta non valida");
                        check = false;
                    }
                    break;

                case "q":
                    return(true);

                default:
                    Console.WriteLine("Scelta non valida");
                    check = false;
                    break;
                }
            }while (check == false);
            return(false);
        }