コード例 #1
0
        public bool Update(Eroi obj)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();

                    SqlCommand command = new SqlCommand();
                    command.Connection  = connection;
                    command.CommandType = System.Data.CommandType.Text;
                    command.CommandText = "UPDATE Eroi SET Livello_ID = @Livello, PuntiVita = @PuntiVita, TempoTotale = @TempoTotale, Punti = @Punti WHERE ID = @id;";

                    command.Parameters.AddWithValue("@ID", obj.ID);
                    command.Parameters.AddWithValue("@Livello", obj.Livello);
                    command.Parameters.AddWithValue("@PuntiVita", obj.PuntiVita);
                    command.Parameters.AddWithValue("@TempoTotale", obj.TempoTotale);
                    command.Parameters.AddWithValue("@Punti", obj.Punti);

                    command.ExecuteNonQuery();
                    //Console.WriteLine("Eroe modificato correttamente");
                    return(true);
                }
                catch (SqlException)
                {
                    Console.WriteLine("Errore, eroe non inserito.");
                }
                finally
                {
                    connection.Close();
                }
                return(false);
            }
        }
コード例 #2
0
        /// <summary>
        /// Questa funzione controlla se l'eroe è passato di livello dopo aver ucciso un mostro
        /// </summary>
        /// <param name="eroe">è passato per riferimento perchè se passa di livello aumenta il livello e i punti vita</param>
        public static void ControlloLivello(ref Eroi eroe)
        {
            //Se l'eroe è di livello 5 non può più passare di livello
            if (eroe.Livello == 5)
            {
                return;
            }

            //DIConfig
            var            serviceProvider = DIConfig.Configurazione();
            LivelliService livelliService  = serviceProvider.GetService <LivelliService>();

            //Prendo la lista dei livelli
            List <Livelli> listaLivelli = new List <Livelli>(livelliService.ListaLivelli());

            //Confronto i punti eroe con i punti massimi del suo livello, se li supera passa di livello
            foreach (var item in listaLivelli)
            {
                if (item.ID == eroe.Livello + 1) //Livello successivo
                {
                    if (item.PuntiPassaggio <= eroe.Punti)
                    {
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        Console.WriteLine("Congratulazioni sei passato di livello!!");
                        eroe.Livello++;
                        Console.WriteLine("Sei salito al livello: " + eroe.Livello);
                        eroe.PuntiVita = item.PuntiVita;
                        Console.WriteLine("Ora i tuoi punti vita sono: " + eroe.PuntiVita);
                        Console.ForegroundColor = ConsoleColor.White;
                        break;
                    }
                }
            }
        }
コード例 #3
0
        public bool Delete(Eroi obj)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand();
                    command.Connection  = connection;
                    command.CommandType = System.Data.CommandType.Text;
                    command.CommandText = "DELETE FROM Eroi WHERE ID = @ID";

                    command.Parameters.AddWithValue("@ID", obj.ID);

                    command.ExecuteNonQuery();
                    //Console.WriteLine("Eroe eliminato con successo");
                    return(true);
                }
                catch (SqlException)
                {
                    Console.WriteLine("Impossibile eliminare l'eroe");
                }
                finally
                {
                    connection.Close();
                }
                return(false);
            }
        }
コード例 #4
0
        public bool Create(Eroi obj)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();

                    SqlCommand command = new SqlCommand();
                    command.Connection  = connection;
                    command.CommandType = System.Data.CommandType.Text;
                    command.CommandText = "INSERT INTO Eroi VALUES (@Nome,@Classe,@Arma,@Livello,@PuntiVita,@Giocatore,@TempoTotale,@Punti);";

                    command.Parameters.AddWithValue("@Nome", obj.Nome);
                    command.Parameters.AddWithValue("@Classe", obj.Classe);
                    command.Parameters.AddWithValue("@Arma", obj.Arma);
                    command.Parameters.AddWithValue("@Livello", obj.Livello);
                    command.Parameters.AddWithValue("@PuntiVita", obj.PuntiVita);
                    command.Parameters.AddWithValue("@Giocatore", obj.Giocatore);
                    command.Parameters.AddWithValue("@TempoTotale", obj.TempoTotale);
                    command.Parameters.AddWithValue("@Punti", obj.Punti);

                    command.ExecuteNonQuery();
                    connection.Close();
                    Console.WriteLine("Eroe inserito correttamente");
                    return(true);
                }
                catch (SqlException)
                {
                    connection.Close();
                    Console.WriteLine("Errore, eroe non inserito.");
                }
                return(false);
            }
        }
コード例 #5
0
 public bool Delete(Eroi obj)
 {
     eroiSalvati.Remove(obj);
     if (eroiSalvati.Contains(obj))
     {
         return(false);
     }
     return(true);
 }
コード例 #6
0
 public bool Create(Eroi obj)
 {
     eroiSalvati.Add(obj);
     if (eroiSalvati.Contains(obj))
     {
         return(true);
     }
     return(false);
 }
コード例 #7
0
        /// <summary>
        /// In un turno l'eroe può: combattere (infligge danni al mostro), fuggire (se ci riesce gli vengono
        /// sottratti dei punti, se non ci riesce il turno passa al mostro)
        /// </summary>
        /// <param name="eroe">L'eroe che sta giocando</param>
        /// <param name="mostro">Il mostro che sta giocando</param>
        /// <param name="danniEroe">è un bool che viene ritornato, true = fuga fallita, devo togliere dei
        /// punti all'eroe, false l'eroe ha attaccato il mostro quindi devo togliergli dei punti vita,
        /// se la fuga fallisce non lo guardo</param>
        /// <returns>ritorna i punti da togliere all'eroe o al mostro o -1 se la fuga fallisce</returns>
        public static int GiocaEroe(Eroi eroe, Mostri mostro, out bool danniEroe)
        {
            //DIConfig
            var         serviceProvider = DIConfig.Configurazione();
            ArmiService armiService     = serviceProvider.GetService <ArmiService>();

            //Se fallisce la fuga non lo guardo
            danniEroe = false;

            int  scelta   = 0;
            bool corretto = false;

            Console.WriteLine("è il turno dell'eroe cosa vuoi fare?\n" +
                              "1 - Attacca!\n" +
                              "2 - Scappa");
            do
            {
                corretto = Int32.TryParse(Console.ReadLine(), out scelta);
                if (corretto == false || scelta != 1 && scelta != 2)
                {
                    Console.WriteLine("Comando non riconosciuto, riprova:");
                }
            } while (corretto == false || scelta != 1 && scelta != 2);

            //Attacco
            if (scelta == 1)
            {
                //Devo prendere i punti danno dell'arma
                Armi armaGiocatore = new Armi();
                armaGiocatore = armiService.ArmaPersonaggio(eroe.Arma);
                //int danniInflitti = armaGiocatore.PuntiDanno;
                //Li passo al turno così modifico direttamente il mostro
                danniEroe = false;
                Console.WriteLine("Hai attaccato il mostro con successo");
                return(armaGiocatore.PuntiDanno);
            }
            else
            {
                if (Fuga())
                {
                    //I punti sottratti all'eroe sono livello mostro * 5
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("Fuga eseguita con successo");
                    Console.ForegroundColor = ConsoleColor.White;
                    danniEroe = true;
                    return(mostro.Livello * 5);
                }
            }
            //Ritorna -1 solo se la fuga non è riuscita
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("Fuga non riuscita...");
            Console.ForegroundColor = ConsoleColor.White;
            return(-1);
        }
コード例 #8
0
        /// <summary>
        /// Questa funzione controlla se l'eroe ha vinto
        /// </summary>
        /// <param name="eroe">è l'eroe che sta giocando</param>
        /// <returns>true se ha vinto, false altrimenti</returns>
        public static bool Vittoria(Eroi eroe)
        {
            //Si vince se l'eroe raggiunge i 200 punti
            if (eroe.Punti >= 200)
            {
                Console.BackgroundColor = ConsoleColor.Green;
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("CONGRATULAZIONI, HAI VINTO IL GIOCO!!");
                Console.ResetColor();
                return(true);
            }

            return(false);
        }
コード例 #9
0
 public bool Update(Eroi obj)
 {
     foreach (var item in eroiSalvati)
     {
         if (item.ID == obj.ID)
         {
             item.Livello     = obj.Livello;
             item.Punti       = obj.Punti;
             item.PuntiVita   = obj.PuntiVita;
             item.TempoTotale = obj.TempoTotale;
             return(true);
         }
     }
     return(false);
 }
コード例 #10
0
        //In questa classe ci sono tutte le funzioni relative alla partita

        /// <summary>
        /// Gestisce tutta la partita
        /// </summary>
        /// <param name="eroe">Prende l'eroe scelto dal giocatore</param>
        public static void Turno(Eroi eroe)
        {
            //DIConfig
            var            serviceProvider = DIConfig.Configurazione();
            MostroService  mostroService   = serviceProvider.GetService <MostroService>();
            ArmiService    armiService     = serviceProvider.GetService <ArmiService>();
            EroiService    eroiService     = serviceProvider.GetService <EroiService>();
            LivelliService livelliService  = serviceProvider.GetService <LivelliService>();

            //Il turno finisce quando l'eroe o il mostro muiono
            bool morto = false;

            //La partita finisce quando l'utente decide di tornare al menu
            bool giocaAncora;

            //Numero dei turni
            int n = 0;

            //Iniziare il timer del tempo di gioco dell'eroe
            Stopwatch watch = new Stopwatch();

            watch.Start();
            do
            {
                //A inizio di ogni turno cancello la console
                Console.Clear();
                //Aumento il numero dei turni;
                n++;

                //A ogni turno cambio il Mostro
                //Richiamo un mostro random di livello >= livello eroe
                List <Mostri> mostri              = new List <Mostri>(mostroService.ListaMostriLivelloEroe(eroe.Livello));
                Random        random              = new Random();
                int           numRandom           = random.Next(mostri.Count);
                Mostri        mostroDaSconfiggere = mostri[numRandom];
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Turno numero : " + n);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write(mostroDaSconfiggere.Nome + " livello " + mostroDaSconfiggere.Livello);
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write(" VS ");
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Write($"{eroe.Nome} livello {eroe.Livello}\n");
                Console.ForegroundColor = ConsoleColor.White;

                //A inizio turno resetto che nessuno è morto
                morto = false;

                //Con il Mock i danni al mostro vengono salvati, devo resettarlo
                //Con il database non serve
                //mostroDaSconfiggere.PuntiVita = livelliService.RitornaLivello(mostroDaSconfiggere.Livello).PuntiVita;
                do
                {
                    //Gioca sempre prima l'eroe
                    int danniSubiti = GiocaEroe(eroe, mostroDaSconfiggere, out bool danniEroe);
                    //Se la fuga ha successo
                    if (danniSubiti > 0 && danniEroe)
                    {
                        //Li sottraggo dai punti
                        eroe.Punti -= danniSubiti;

                        //finisce il turno
                        break;
                    }
                    //Attacco il mostro
                    else if (danniSubiti > 0)
                    {
                        mostroDaSconfiggere.PuntiVita -= danniSubiti;
                        //Se il mostro non è morto scrivo quanti punti vita gli rimangono
                        Console.ForegroundColor = ConsoleColor.Blue;
                        if (mostroDaSconfiggere.PuntiVita > 0)
                        {
                            Console.WriteLine($"Il mostro ha {mostroDaSconfiggere.PuntiVita} punti vita");
                        }
                        Console.ResetColor();
                        if (mostroDaSconfiggere.PuntiVita <= 0)
                        {
                            Console.ForegroundColor = ConsoleColor.Green;
                            Console.WriteLine("Il mostro è morto\nHai Vinto!!!");
                            Console.ForegroundColor = ConsoleColor.White;
                            //Devo aggiungere i punti vittoria all'eroe: livello mostro * 10
                            eroe.Punti += mostroDaSconfiggere.Livello * 10;

                            //Controllo se è passato di livello
                            ControlloLivello(ref eroe);

                            //Controllo se ha vinto (è arrivato a 200 punti)
                            if (Vittoria(eroe))
                            {
                                //Se vince torna al menu principale salvando le statistiche
                                watch.Stop();
                                //Console.WriteLine("Watch: " + watch.ElapsedMilliseconds);
                                //TimeSpan time = new TimeSpan(watch.ElapsedMilliseconds * 10000);
                                //Console.WriteLine("Time : " + time);
                                eroe.TempoTotale += watch.ElapsedMilliseconds;
                                eroiService.SalvaProgressi(eroe);
                                return;
                            }
                            //Il mostro è morto finisce il turno
                            morto = true;
                        }
                    }
                    //Se la fuga fallisce
                    //è il turno del mostro se uno dei due non è morto
                    if (morto != true)
                    {
                        Console.WriteLine("è il turno del mostro");
                        int danniMostro = GiocaMostro(mostroDaSconfiggere);
                        eroe.PuntiVita -= danniMostro;
                        Console.WriteLine("Il mostro attacca con successo");
                        //Se l'eroe non è morto mostro quanti punti vita gli restano
                        Console.ForegroundColor = ConsoleColor.Blue;
                        if (eroe.PuntiVita > 0)
                        {
                            Console.WriteLine($"L'eroe ha {eroe.PuntiVita} punti vita");
                        }
                        Console.ResetColor();
                        if (eroe.PuntiVita <= 0)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("L'eroe è morto\nHai perso...");
                            Console.ForegroundColor = ConsoleColor.White;
                            //L'eroe è morto, lo cancello
                            eroiService.EliminaEroe(eroe);
                            morto = true;
                        }
                    }
                } while (morto == false);

                //Se è morto l'eroe torna direttamente al menu, non può decidere di non salvare
                if (eroe.PuntiVita <= 0)
                {
                    break;
                }
                //Se ha vinto può decidere se continuare o se tornare salvando o no
                Console.WriteLine("Il turno è finito, cosa vuoi fare?\n" +
                                  "1 - Giocare ancora\n" +
                                  "2 - Salva e torna al menu\n" +
                                  "3 - Torna al menu senza salvare");
                int  scelta   = 0;
                bool corretta = false;
                do
                {
                    corretta = Int32.TryParse(Console.ReadLine(), out scelta);
                    if (corretta == false || scelta < 1 || scelta > 3)
                    {
                        Console.WriteLine("Comando non valido, riprova:");
                    }
                } while (corretta == false || scelta < 1 || scelta > 3);

                //Se decide di non salvare torna al menu principale
                if (scelta == 3)
                {
                    break;
                }
                else if (scelta == 2)
                {
                    giocaAncora = false;
                }
                else
                {
                    giocaAncora = true;
                }
                //Salva e torna al menu
                if (giocaAncora != true)
                {
                    //Fermo il timer
                    watch.Stop();
                    //Console.WriteLine("Watch: " + watch.ElapsedMilliseconds);
                    //TimeSpan time = new TimeSpan(watch.ElapsedMilliseconds * 10000);
                    //Console.WriteLine("Time : " + time);
                    //finita la partita salvo i progressi (solo se l'eroe non è morto)
                    eroe.TempoTotale += watch.ElapsedMilliseconds;
                    eroiService.SalvaProgressi(eroe);
                }
            } while (giocaAncora == true);
            //Al rientro nel menu si cancella la console
            Console.WriteLine("Premi un tasto per tornare al menu principale");
            Console.ReadKey();
        }
コード例 #11
0
        /// <summary>
        /// Questo è il menu che viene mostrato all'utente
        /// </summary>
        public static void Menu()
        {
            //DIConfig
            var              serviceProvider  = DIConfig.Configurazione();
            EroiService      eroiService      = serviceProvider.GetService <EroiService>();
            GiocatoriService giocatoriService = serviceProvider.GetService <GiocatoriService>();
            MostroService    mostroService    = serviceProvider.GetService <MostroService>();

            Console.Write("BENVENUTO A ");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.Write("MOSTRI");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" VS ");
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("EROI\n");
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("Inserisci il tuo nome: ");
            string nomeGiocatore = Console.ReadLine();

            //Confronto se il giocatore esiste o no
            List <Giocatori> listaGiocatori = new List <Giocatori>();

            listaGiocatori = (List <Giocatori>)giocatoriService.ListaGiocatori();
            bool      giocatoreTrovato = false;
            Giocatori giocatoreAttuale = new Giocatori();

            foreach (var item in listaGiocatori)
            {
                //Se esiste lo prendo
                if (nomeGiocatore == item.Nome)
                {
                    giocatoreTrovato = true;
                    giocatoreAttuale = item;
                    break;
                }
            }
            //Se non esiste lo creo
            if (giocatoreTrovato == false)
            {
                giocatoreAttuale.Nome = nomeGiocatore;
                //Tutti i giocatori inseriti da console sono utenti, non admin
                giocatoreAttuale.Ruolo_ID = 1;
                //Se l'utente inserisce un nome già presente nel db il giocatore non viene inserito,
                //il nome deve essere univoco
                bool univoco = false;
                do
                {
                    univoco = giocatoriService.CreaGiocatore(giocatoreAttuale);
                    //Se il nome è univoco esco
                    if (univoco == true)
                    {
                        break;
                    }
                    //Se non è univoco lo deve inserire di nuovo
                    else
                    {
                        Console.WriteLine("Inserisci un nuovo nome: ");
                        giocatoreAttuale.Nome = Console.ReadLine();
                    }
                } while (true);
                List <Giocatori> listaGiocatori2 = new List <Giocatori>();
                listaGiocatori2 = (List <Giocatori>)giocatoriService.ListaGiocatori();
                foreach (var item in listaGiocatori2)
                {
                    if (nomeGiocatore == item.Nome)
                    {
                        giocatoreAttuale = item;
                        break;
                    }
                }
            }

            bool esci = false;

            do
            {
                //Resetto la console ogni volta che torno al menu
                Console.Clear();
                List <Eroi> listaEroi = new List <Eroi>();
                listaEroi = (List <Eroi>)eroiService.EroiDiUnGiocatore(giocatoreAttuale.ID);

                //Titolo
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("MOSTRI");
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write(" VS ");
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Write("EROI\n");
                Console.ForegroundColor = ConsoleColor.White;

                //Se ha già degli eroi può: continuare con un eroe, eliminarne uno, crearlo, vedere le statistiche e uscire
                if (listaEroi.Count > 0)
                {
                    Console.WriteLine("Menu principale:");
                    Console.WriteLine("1 - Crea un nuovo Eroe");
                    Console.WriteLine("2 - Continua con un Eroe");
                    Console.WriteLine("3 - Elimina un Eroe");
                    Console.WriteLine("4 - Guarda le statistiche dei tuoi eroi");
                    Console.WriteLine("5 - Salva ed esci");

                    //Se è admin può creare e cancellare i mostri e vedere le statistiche dei giocatori
                    if (giocatoreAttuale.Ruolo_ID == 2)
                    {
                        Console.WriteLine("6 - Crea un nuovo mostro");
                        Console.WriteLine("7 - Elimina un mostro");
                        Console.WriteLine("8 - Guarda le statistiche globali");
                    }
                    int  index    = 0;
                    bool corretto = false;
                    //Se non è admin può scegliere solo 5 opzioni
                    if (giocatoreAttuale.Ruolo_ID == 1)
                    {
                        do
                        {
                            corretto = Int32.TryParse(Console.ReadLine(), out index);
                            if (corretto == false || index < 1 || index > 6)
                            {
                                Console.WriteLine("Comando non riconosciuto, riprova");
                            }
                        } while (corretto == false || index < 1 || index > 6);
                    }
                    //Se è admin può scegliere tra 8 opzioni
                    else
                    {
                        do
                        {
                            corretto = Int32.TryParse(Console.ReadLine(), out index);
                            if (corretto == false || index < 1 || index > 8)
                            {
                                Console.WriteLine("Comando non riconosciuto, riprova");
                            }
                        } while (corretto == false || index < 1 || index > 8);
                    }

                    switch (index)
                    {
                    case 1:
                        //Crea un nuovo eroe
                        Eroi eroeCreato = eroiService.CreateEroe(giocatoreAttuale);
                        Console.WriteLine("Premi un tasto per iniziare il turno");
                        Console.ReadKey();
                        Partita.Turno(eroeCreato);
                        break;

                    case 2:
                        //Può vedere solo i suoi eroi
                        foreach (var item in listaEroi)
                        {
                            Console.WriteLine($"{item.ID} - {item.Nome} livello: {item.Livello}");
                        }
                        //Deve scegliere l'eroe
                        bool eroeGiusto = false;
                        Console.WriteLine("Inserisci il numero dell'eroe:");
                        do
                        {
                            bool isCorretto = Int32.TryParse(Console.ReadLine(), out int nEroe);
                            if (isCorretto == true)
                            {
                                foreach (var item in listaEroi)
                                {
                                    if (nEroe == item.ID)
                                    {
                                        eroeGiusto = true;
                                        //Quando seleziona l'eroe inizia il turno
                                        Console.WriteLine("Premi un tasto per iniziare il turno");
                                        Console.ReadKey();
                                        Partita.Turno(item);
                                        break;
                                    }
                                }
                            }
                            if (isCorretto == false || eroeGiusto == false)
                            {
                                Console.WriteLine("Eroe non corretto, riprova:");
                            }
                        } while (eroeGiusto == false);
                        break;

                    case 3:
                        //Eliminare un eroe
                        foreach (var item in listaEroi)
                        {
                            Console.WriteLine($"{item.ID} - {item.Nome} livello: {item.Livello}");
                        }
                        //Deve scegliere l'eroe
                        bool eroeDaEliminare = false;
                        Console.WriteLine("Inserisci il numero dell'eroe da eliminare:");
                        do
                        {
                            bool eroeCorretto = Int32.TryParse(Console.ReadLine(), out int nEroe);
                            if (eroeCorretto == true)
                            {
                                foreach (var item in listaEroi)
                                {
                                    if (nEroe == item.ID)
                                    {
                                        eroeDaEliminare = true;
                                        //Quando seleziona l'eroe lo elimino
                                        eroiService.EliminaEroe(item);
                                        break;
                                    }
                                }
                            }
                            if (eroeCorretto == false || eroeDaEliminare == false)
                            {
                                Console.WriteLine("Eroe non valido, riprova:");
                            }
                        } while (eroeDaEliminare == false);
                        Console.WriteLine("Premi un tasto per continuare");
                        Console.ReadKey();
                        break;

                    case 4:
                        //Mostra le statistiche del giocatore attuale
                        Partita.StatisticheUtente(giocatoreAttuale);
                        break;

                    case 5:
                        //Esce
                        //Non faccio nessuna operazione perchè tutte quelle precedenti sono già state salvate
                        Console.WriteLine("Arrivederci!");
                        esci = true;
                        break;

                    //Questi può sceglierli solo un admin
                    case 6:
                        //Crea un nuovo mostro
                        mostroService.CreaMostro();
                        Console.WriteLine("Premi un tasto per continuare");
                        Console.ReadKey();
                        break;

                    case 7:
                        //Elimina un mostro
                        mostroService.EliminaMostro();
                        Console.WriteLine("Premi un tasto per continuare");
                        Console.ReadKey();
                        break;

                    case 8:
                        //Mostra statistiche dei giocatori
                        Partita.Statistiche();
                        break;

                    default:
                        Console.WriteLine("Case default");
                        break;
                    }
                }
                else
                {
                    //Se non ha eroi può crearne uno nuovo o uscire dal gioco
                    Console.WriteLine("Menu principale:");
                    Console.WriteLine("1 - Crea un nuovo Eroe");
                    Console.WriteLine("2 - Salva ed esci");

                    //Se è admin può creare e cancellare i mostri e vedere le statistiche dei giocatori
                    if (giocatoreAttuale.Ruolo_ID == 2)
                    {
                        Console.WriteLine("3 - Crea un nuovo mostro");
                        Console.WriteLine("4 - Elimina un mostro");
                        Console.WriteLine("5 - Guarda le statistiche");
                    }
                    int  index    = 0;
                    bool corretto = false;
                    //Se non è admin può scegliere solo 2 opzioni
                    if (giocatoreAttuale.Ruolo_ID == 1)
                    {
                        do
                        {
                            corretto = Int32.TryParse(Console.ReadLine(), out index);
                            if (corretto == false || index != 1 && index != 2)
                            {
                                Console.WriteLine("Comando non riconosciuto, riprova");
                            }
                        } while (corretto == false || index != 1 && index != 2);
                    }
                    //Se è admin può scegliere tra 5 opzioni
                    else
                    {
                        do
                        {
                            corretto = Int32.TryParse(Console.ReadLine(), out index);
                            if (corretto == false || index < 1 || index > 5)
                            {
                                Console.WriteLine("Comando non riconosciuto, riprova");
                            }
                        } while (corretto == false || index < 1 || index > 5);
                    }

                    switch (index)
                    {
                    case 1:
                        //Crea un nuovo eroe
                        Eroi eroeCreato = eroiService.CreateEroe(giocatoreAttuale);
                        Console.WriteLine("Premi un tasto per iniziare il turno");
                        Console.ReadKey();
                        Partita.Turno(eroeCreato);
                        break;

                    case 2:
                        //Esce
                        //Non faccio nessuna operazione perchè tutte quelle precedenti sono già state salvate
                        Console.WriteLine("Arrivederci!");
                        esci = true;
                        break;

                    //Questi può sceglierli solo un admin
                    case 3:
                        //Crea un nuovo mostro
                        mostroService.CreaMostro();
                        Console.WriteLine("Premi un tasto per continuare");
                        Console.ReadKey();
                        break;

                    case 4:
                        //Elimina un mostro
                        mostroService.EliminaMostro();
                        Console.WriteLine("Premi un tasto per continuare");
                        Console.ReadKey();
                        break;

                    case 5:
                        //Mostra statistiche dei giocatori
                        Partita.Statistiche();
                        break;

                    default:
                        Console.WriteLine("Case default");
                        break;
                    }
                }
            } while (esci != true);
        }
コード例 #12
0
        public Eroi CreateEroe(Giocatori giocatore)
        {
            Eroi eroe = new Eroi();

            //ID, Nome, Classe, Arma, Livello, TempoTotale = 0, PuntiVita
            //L'id lo inserisce il db

            //Il nome deve essere univoco, lo confronto con gli eroi già inseriti
            Console.WriteLine("Inserisci il nome del tuo eroe: ");
            string nome    = Console.ReadLine();
            bool   univoco = true;

            do
            {
                univoco = true;
                List <Eroi> listaEroi = new List <Eroi>(GetAllEroi());
                foreach (var item in listaEroi)
                {
                    if (nome == item.Nome)
                    {
                        Console.WriteLine("Il nome dell'eroe deve essere univoco, riprova: ");
                        nome    = Console.ReadLine();
                        univoco = false;
                    }
                }
            } while (univoco != true);
            eroe.Nome = nome;
            Console.WriteLine("Le classi disponibili sono: ");
            //Mostra lista di classi con filtro su eroe
            //var classiService = new ClassiService(new MockClassiRepository());
            var classiService = new ClassiService(new ADOClassiRepos());
            var classiEroi    = classiService.ListaClassiConFiltro(1);

            foreach (var item in classiEroi)
            {
                Console.WriteLine($"{item.ID} - {item.Nome}");
            }
            bool trovato = false;

            Console.WriteLine("Inserisci il numero della classe: ");
            do
            {
                bool corretto = Int32.TryParse(Console.ReadLine(), out int classe);
                if (corretto == true)
                {
                    foreach (var item in classiEroi)
                    {
                        if (item.ID == classe)
                        {
                            trovato     = true;
                            eroe.Classe = item.ID;
                            break;
                        }
                    }
                }
                if (corretto == false || trovato == false)
                {
                    Console.WriteLine("Classe non trovata, riprova");
                }
            } while (trovato == false);

            //Mostra lista di armi con filtro sulla classe dell'eroe
            //var armiService = new ArmiService(new MockArmiRepository());
            var armiService = new ArmiService(new ADOArmiRepos());
            var armiEroe    = armiService.ListaArmiConFiltro(eroe.Classe);

            foreach (var item in armiEroe)
            {
                Console.WriteLine($"{item.ID} - {item.Nome}");
            }
            bool trovataArma = false;

            Console.WriteLine("Inserisci il numero dell'arma che vuoi: ");
            do
            {
                bool corretto = Int32.TryParse(Console.ReadLine(), out int idArma);
                if (corretto == true)
                {
                    foreach (var item in armiEroe)
                    {
                        if (item.ID == idArma)
                        {
                            trovataArma = true;
                            eroe.Arma   = item.ID;
                            break;
                        }
                    }
                }
                if (corretto == false || trovataArma == false)
                {
                    Console.WriteLine("Arma non trovata, riprova:");
                }
            } while (trovataArma == false);
            eroe.Giocatore = giocatore.ID;

            //Tutti i nuovi eroi sono di livello 1
            eroe.Livello = 1;

            //Impostato a 0 perchè non ha ancora mai giocato
            eroe.TempoTotale = 0;

            //I punti vita sono relativi al livello
            //var livelliService = new LivelliService(new MockLivelliRepository());
            var livelliService = new LivelliService(new ADOLivelliRepos());
            var livelloDB      = livelliService.RitornaLivello(1);

            eroe.PuntiVita = livelloDB.PuntiVita;

            _repo.Create(eroe);

            //Devo restituirlo creato
            List <Eroi> eroi = new List <Eroi> (GetAllEroi());

            foreach (var item in eroi)
            {
                //Basta il nome perchè è univoco
                if (item.Nome == nome)
                {
                    return(item);
                }
            }
            return(new Eroi());
        }
コード例 #13
0
 public void SalvaProgressi(Eroi obj)
 {
     _repo.Update(obj);
 }
コード例 #14
0
 public void EliminaEroe(Eroi obj)
 {
     _repo.Delete(obj);
 }