//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); }