//Restituisce la lista delle classi disponibili per il personaggio mostro
        public static List <Classe> ClassiPerMostro()
        {
            ClasseService classeService = serviceProvider.GetService <ClasseService>();
            var           classi        = classeService.GetClassiFiltrate(0).ToList();

            return(classi);
        }
        static void Main(string[] args)
        {
            var              serviceProvider  = Configurazone.Configurazione();
            EroeService      eroeservice      = serviceProvider.GetService <EroeService>();
            GiocatoreService giocatoreService = serviceProvider.GetService <GiocatoreService>();
            MostroService    mostroService    = serviceProvider.GetService <MostroService>();
            ArmaService      armaService      = serviceProvider.GetService <ArmaService>();
            ClasseService    classeService    = serviceProvider.GetService <ClasseService>();
            LivelloService   livelloService   = serviceProvider.GetService <LivelloService>();


            List <Giocatore> listaG = giocatoreService.GetAllGiocatori().ToList();


            //inizio del gioco

            Console.WriteLine("Benvenuto in eroi contro mostri");
            Giocatore giocatore = new Giocatore();

            Console.WriteLine("Inserisci il tuo nome:");
            string n = Console.ReadLine();

            giocatore.Nome = n;

            Console.WriteLine();

            //Controllo sul giocatore
            Partita.ControlloGiocatore(giocatore, listaG);
            giocatore = giocatoreService.GetGiocatore(n);

            int x = 0;

            do
            {
                //ogni volta che torno al menù vengono caricate le liste aggiornate
                List <Livello>   listaLivelli   = livelloService.GetAllLivelli().ToList();
                List <Classe>    listaClassi    = classeService.GetAllClassi().ToList();
                List <Arma>      listaArmi      = armaService.GetAllArmi().ToList();
                List <Giocatore> listaGiocatori = giocatoreService.GetAllGiocatori().ToList();
                List <Eroe>      listaeroi      = eroeservice.GetAllEroi().ToList();
                List <Mostro>    listaMostri    = mostroService.GetAllMostri().ToList();

                Console.WriteLine("Se vuoi iniziare una partita premi 1");
                Console.WriteLine("Se vuoi creare un eroe premi 2");
                Console.WriteLine("Se vuoi eliminare un eroe premi 3");
                Console.WriteLine("Se vuoi vedere le statistiche premi 4");
                //inserisco questa scelta solo se il giocatore ha la caratteristica richiesta
                if (giocatore.Ruolo == "Admin")
                {
                    Console.WriteLine("Dato che sei Admin, se vuoi inserire un mostro premi 5");
                }
                Console.WriteLine("Se vuoi uscire dal gioco premi un tasto");
                char a = Console.ReadKey().KeyChar;
                Console.WriteLine();

                switch (a)
                {
                case '1':
                    //Scelgo l'eroe per la partita
                    Eroe eroe = Partita.SceltaEroe(listaeroi, giocatore, listaClassi, listaArmi);
                    //controllo di non aver inserito male i dati
                    if (eroe == null)
                    {
                        giocatore.ListaEroi.Clear();  break;
                    }
                    //aggiorno i restanti campi
                    eroe.Classe      = classeService.GetClasseByID(eroe.ClasseID);
                    eroe.Arma        = armaService.GetArmaByID(eroe.ArmaID);
                    eroe.Giocatore   = giocatoreService.GetGiocatore(giocatore.Nome);
                    eroe.GiocatoreID = eroe.Giocatore.ID;
                    eroe.Livello     = livelloService.GetLivello(eroe.LivelloID);

                    if (eroe == null)
                    {
                        x = 0;
                        break;
                    }

                    //Scelgo il mostro con la funzione random
                    Mostro mostro = Partita.SceltaMostro(eroe, listaMostri);

                    //Inizia la battaglia
                    x = Partita.Battaglia(eroe, mostro);
                    Console.WriteLine("Se vuoi giocare ancora premi 0");
                    char d = Console.ReadKey().KeyChar;
                    Console.WriteLine();
                    if (d == '0')
                    {
                        giocatore.ListaEroi.Clear();
                        x = 0;
                        break;
                    }
                    else
                    {
                        x = 1;
                    }
                    break;

                case '2':
                    Eroe eroe3 = Partita.CreazioneEroe(giocatore, listaClassi, listaArmi, listaeroi);
                    break;

                case '3':
                    Partita.VisualizzaEroi(listaeroi, giocatore);
                    Console.WriteLine("Inserisci il nome dell'eroe che vuoi eliminare");
                    string nome  = Console.ReadLine();
                    Eroe   eroe2 = eroeservice.GetEroeByName(nome);
                    if (eroe2.Nome == null)
                    {
                        Console.WriteLine("Non esiste questo eroe!");
                        break;
                    }
                    eroeservice.DeleteEroe(eroe2);
                    break;

                case '4':
                    Partita.VisualizzaStatistiche(giocatore, listaGiocatori, listaeroi);
                    break;

                case '5':
                    //nel caso in cui un giocatore Utente inserisca il 5 faccio un controllo e lo riporto al menù
                    if (giocatore.Ruolo != "Admin")
                    {
                        Console.WriteLine("Scelta sbagliata, Torna al menu"); break;
                    }
                    Partita.CreazioneMostro(listaMostri, listaClassi, listaArmi, listaLivelli);
                    Console.WriteLine("Il Mostro é stato creato, torna al menù");
                    break;

                default:
                    x = 1;
                    break;
                }
            } while (x == 0);
        }
Example #3
0
        /// <summary>
        ///     Metodo Start che mostra il menù principale
        ///     e fa partire il gioco
        /// </summary>
        public static void Start(Giocatore giocatore)
        {
            #region Dependency Injection
            var serviceProvider = DIConfig.Config();

            HeroService   heroService   = serviceProvider.GetService <HeroService>();
            ClasseService classeService = serviceProvider.GetService <ClasseService>();
            ArmaService   armaService   = serviceProvider.GetService <ArmaService>();
            //LevelService levelService = serviceProvider.GetService<LevelService>();
            MostroService mostroService = serviceProvider.GetService <MostroService>();

            var mostri = mostroService.GetAllMostri();
            #endregion

            //Chiamo il menù delle opzioniprima di iniziare l'eventuale partita
            Helper.Menu();

            //Catturo la scelta dell'utente da console
            bool IsCorrectUserInput = Int32.TryParse(Console.ReadLine(), out int key);
            Console.WriteLine();

            //Se l'input è idoneo, per ogni opzione scelta
            //vengono eseguite le istruzioni corrispondenti
            if (IsCorrectUserInput)
            {
                switch (key)
                {
                    #region CASO 1 NUOVO EROE
                case 1:     //Giocatore può creare un nuovo eroe con il quale giocare

                    #region CREAZIONE EROE

                    //Richiesta Parametri in input da console
                    Console.WriteLine("Inserisci il nome del tuo Eroe: ");
                    string Nome = Console.ReadLine();

                    Console.WriteLine("CLASSI: ");
                    var classi = classeService.GetAllClassi();
                    foreach (var cl in classi)
                    {
                        if (cl.Hero == true)
                        {
                            Console.WriteLine($"{cl.Nome}");
                        }
                    }
                    Console.WriteLine("Scegli la classe del tuo Eroe: ");
                    string Classe = Console.ReadLine();

                    Console.WriteLine("ARMI: ");
                    var armi = armaService.GetAllArmi();
                    foreach (var arma in armi)
                    {
                        if (arma.Classe == Classe)
                        {
                            Console.WriteLine($"{arma.Nome}");
                        }
                    }
                    Console.WriteLine("Scegli l'arma del tuo Eroe: ");
                    string Arma = Console.ReadLine();

                    Hero hero = new Hero(Nome, Classe, Arma, giocatore);

                    heroService.CreateHero(hero);

                    //è stato creato un nuovo oggetto eroe, sia nel programma
                    //nel database e può iniziare a giocare

                    Console.WriteLine("Premi il tasto invio per iniziare a giocare!");
                    Console.ReadLine();
                    #endregion

                    //GAME

                    //Chiamo il metodo che gioca la battaglia eroe selezionato contro mostri
                    //formata eventualmente da diversi scontri
                    Turno.Game(hero, mostri, giocatore);

                    break;
                    #endregion

                    #region CASO 2 ELIMINA EROE
                case 2:     //Giocatore sceglie di eliminare un suo eroe

                    Console.WriteLine("I Tuoi Eroi: ");
                    var heros = heroService.GetAllHeros();

                    //Seleziono solo gli eroi del giocatore corrente
                    foreach (var h in heros)
                    {
                        if (h.Giocatore.Nome == giocatore.Nome)
                        {
                            Console.WriteLine($"{h.Nome}");
                        }
                    }
                    Console.WriteLine("Seleziona l'Eroe da eliminare: ");
                    string heroDel = Console.ReadLine();

                    Hero heroToDelete = heroService.GetHero(heroDel);

                    bool deleted = heroService.DeleteHero(heroToDelete);
                    if (deleted == true)
                    {
                        Console.WriteLine("L'operazione di cancellazione è avvenuta correttamente");
                    }
                    else
                    {
                        Console.WriteLine("L'operazione di cancellazione NON è avvenuta correttamente");
                    }
                    Console.ReadLine();
                    break;
                    #endregion

                    #region CASO 3 CONTINUA PARTITA EROE
                case 3:     //il giocatore sceglie di continuare la partita con un suo eroe già esistente

                    Console.WriteLine("Ecco i Tuoi Eroi: ");
                    var eroi = heroService.GetAllHeros();

                    //Seleziono solo gli eroi associati al giocatore corrente
                    foreach (var h in eroi)
                    {
                        if (h.Giocatore.Nome == giocatore.Nome)
                        {
                            Console.WriteLine($"{h.Nome}");
                        }
                    }
                    Console.WriteLine("Seleziona l'Eroe col quale giocare la partita: ");
                    string nomeHero = Console.ReadLine();

                    hero = heroService.GetHero(nomeHero);

                    //GAME

                    //Chiamo il metodo che gioca la battaglia eroe selezionato contro mostri
                    //formata eventualmente da diversi scontri
                    Turno.Game(hero, mostri, giocatore);

                    break;

                    #endregion

                case 'q':     //Il giocatore sceglie di uscire dal gioco

                    Console.WriteLine("Arrivederci!!!");
                    Console.ReadLine();
                    break;

                default:     //caso in cui il giocatore ha inserito un input errato

                    Console.WriteLine("Riprovare.");
                    Console.ReadLine();
                    break;
                }
            }
            Console.Clear();
        }