public static Giocatore SceltaGiocatore() { var giocatoreScelto = new Giocatore() { }; var giocatori = RegoleGioco.AllGiocatori(); bool check; do { Console.WriteLine("\nDi quale giocatore vuoi vedere le statistiche?"); for (int i = 1; i <= giocatori.Count; i++) { Console.WriteLine(i + " - " + giocatori[i - 1].ToString()); } Console.WriteLine("Per scegliere un giocatore digita il numero corrispondentee premi invio"); string scelta = Console.ReadLine(); check = Int32.TryParse(scelta, out int res); int indiceGiocatore = res - 1; //Try-Catch mi serve nel caso venga inserito un intero non valido (non tra le opzioni) try { giocatoreScelto = giocatori[indiceGiocatore]; } catch (Exception) { Console.WriteLine("Scelta non valida"); check = false; } } while (check == false); return(giocatoreScelto); }
//Non ho messo i mostri perchè //METODI //Nome giocatore e controllo se presente nel db public static Giocatore Giocatore() { Console.WriteLine("Qual è il tuo nome?"); string nomeGiocatore = Console.ReadLine(); return(RegoleGioco.CheckGiocatore(nomeGiocatore)); }
//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); } }
public static void StatistichePerUtente(Giocatore giocatore) { Console.WriteLine("\nSTATISTICHE di {0}:", giocatore.Nome); var statisticheGiocatore = RegoleGioco.StatisticheByGiocatore(giocatore); if (statisticheGiocatore.Count == 0) { Console.WriteLine("\nNon sono presenti statistiche"); } foreach (Statistica statistica in statisticheGiocatore) { Console.WriteLine(statistica.ToString()); } }
public static void SceltaStatistiche() { bool check = true; do { char key; Console.WriteLine("Quali statistiche vuoi vedere?"); Console.WriteLine("1 - Statistiche di tutti i giocatori"); Console.WriteLine("2 - Statistiche filtrate per giocatore"); key = Console.ReadKey().KeyChar; switch (key) { case '1': //Tutte le statistiche Console.WriteLine("\nSTATISTICHE RELATIVE A TUTTI I GIOCATORI:\n"); var statistiche = RegoleGioco.AllStatistiche(); if (statistiche.Count == 0) { Console.WriteLine("\nNon sono presenti statistiche"); } foreach (Statistica statistica in statistiche) { Console.WriteLine("Giocatore: " + statistica.GiocatoreAssegnato + "\t" + statistica.ToString()); } break; case '2': //Statistiche per giocatore var giocatore = SceltaGiocatore(); Console.WriteLine("\nSTATISTICHE di {0}:\n", giocatore.Nome); var statisticheGiocatore = RegoleGioco.StatisticheByGiocatore(giocatore); if (statisticheGiocatore.Count == 0) { Console.WriteLine("Non sono presenti statistiche per questo giocatore"); } foreach (Statistica statistica in statisticheGiocatore) { Console.WriteLine(statistica.ToString()); } break; default: Console.WriteLine("Scelta non valida"); check = false; break; } } while (check == false); }
public static Eroe SceltaEroe(Giocatore giocatore) { var eroi = RegoleGioco.EroiDelGiocatore(giocatore); var eroeScelto = new Eroe() { }; if (eroi.Count == 0) { Console.WriteLine("Non hai ancora eroi! Torna al menù principale e creane uno!"); return(null); } bool check; do { Console.WriteLine("Questi sono i tuoi eroi:\n "); for (int i = 1; i <= eroi.Count; i++) { Console.WriteLine(i + " - " + eroi[i - 1].ToString()); } Console.WriteLine("\nPer scegliere un eroe digita il numero corrispondente e premi invio"); string scelta = Console.ReadLine(); check = Int32.TryParse(scelta, out int res); int indiceEroe = res - 1; //Se il cast ha funzionato if (check == true) { //Potrebbe essere un intero ma non tra gli indici try { eroeScelto = eroi[indiceEroe]; } catch (Exception) { Console.WriteLine("Scelta non valida"); check = false; } } } while (check == false); return(eroeScelto); }
public static bool ContinuaPartita(Eroe eroe) { bool check = true; do { //Scelte possibili Console.WriteLine("\nCosa vuoi fare?"); Console.WriteLine("1 - Salvare"); Console.WriteLine("2 - Continuare"); Console.WriteLine("3 - Tornare al Menù Principale (SENZA SALVARE)"); char key = (char)Console.ReadKey().Key; switch (key) { case '1': //Salva RegoleGioco.SalvaEroe(eroe); break; case '2': //Continua return(true); case '3': break; default: Console.WriteLine("Scelta non valida\n"); check = false; break; } } while (check == false); return(false); }
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); }
//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); }
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); }