Exemplo n.º 1
0
        public EffettoSparo Rapporto(Coordinate sparo)
        {
            EffettoSparo effettoSparo = EffettoSparo.Acqua;

            foreach (Nave n in laMiaFlotta)
            {
                effettoSparo = n.ControlloDanni(sparo);
                if (effettoSparo.Equals(EffettoSparo.Acqua))
                {
                    continue;
                }
                else if (effettoSparo.Equals(EffettoSparo.Affondato))
                {
                    //rimuovo la nave dalla lista una volta affondata. lista vuota = game over
                    laMiaFlotta.Remove(n);
                    break;
                }
                else if (effettoSparo.Equals(EffettoSparo.Colpito))
                {
                    break;
                }
            }
            if (!laMiaFlotta.Any())
            {
                FlottaAffondata(this);
            }
            return(effettoSparo);
        }
        public EffettoSparo Rapporto(Coordinate sparo)
        {
            EffettoSparo effetto = strategyManager.RiceviColpoFaiRapporto(sparo);

            if (effetto == EffettoSparo.Affondato && FleetIsDestroyed())
            {
                FlottaAffondata?.Invoke(this);
            }
            return(effetto);
        }
        public EffettoSparo Rapporto(Coordinate sparo)
        {
            // chiedo il rapporto, inviando le coordinate dello sparo
            EffettoSparo effetto = stratega.RiceviColpoFaiRapporto(sparo);

            if (effetto == EffettoSparo.Affondato && FleetIsDestroyed())
            {
                FlottaAffondata?.Invoke(this); // scatena l'evento FlottaAffondata
            }

            return(effetto);
        }
Exemplo n.º 4
0
 public void verificaUltimoSparo(EffettoSparo effetto)
 {
     if (effetto.Equals(EffettoSparo.Colpito))
     {
         ultimoSparoASegno = ultimoSparo;
         bersagliColpito   = true;
     }
     else if (effetto.Equals(EffettoSparo.Affondato) || effetto.Equals(EffettoSparo.Acqua))
     {
         bersagliColpito = false;
     }
 }
        string TestoEffetto(EffettoSparo effetto)
        {
            switch (effetto)
            {
            case EffettoSparo.Acqua:
                return("acqua");

            case EffettoSparo.Colpito:
                return("colpito");

            case EffettoSparo.Affondato:
                return("colpito e affondato");

            default:
                return("");
            }
        }
Exemplo n.º 6
0
        public EffettoSparo RiceviColpoFaiRapporto(Coordinate sparo)
        {
            EffettoSparo risultato = EffettoSparo.Acqua;

            SeaCell seaCell = seaMap[sparo.Riga, sparo.Colonna];

            if (!seaCell.IsEmpty)
            {
                risultato = EffettoSparo.Colpito;

                if (seaCell.Ship.Colpita(seaCell.PartIndex))
                {
                    risultato = EffettoSparo.Affondato;
                }
            }

            return(risultato);
        }
Exemplo n.º 7
0
        public EffettoSparo ControlloDanni(Coordinate zonaColpita)
        {
            EffettoSparo effetto = EffettoSparo.Acqua;

            //controllo se sono stato colpito
            if (pezziNave.Contains(zonaColpita))
            {
                pezziNave.Remove(zonaColpita);
                if (!pezziNave.Any())
                {
                    effetto = EffettoSparo.Affondato;
                }
                else
                {
                    effetto = EffettoSparo.Colpito;
                }
            }
            return(effetto);
        }
        private string GetRisultatoSparo(EffettoSparo effettoSparo)
        {
            string risultato = string.Empty;

            switch (effettoSparo)
            {
            case EffettoSparo.Acqua:
                risultato = "Acqua";
                break;

            case EffettoSparo.Colpito:
                risultato = "Colpito";
                break;

            case EffettoSparo.Affondato:
                risultato = "Affondato";
                break;
            }
            return(risultato);
        }
        public GameResult PlayGame()
        {
            logger.Log(this, $"Request to Admiral {admiralWhite.Nome} to set the fleet...");
            admiralWhite.PosizionaFlotta();
            logger.Log(this, $"Request to Admiral {admiralWhite.Nome} to set the fleet completed.");

            logger.Log(this, $"Request to Admiral {admiralBlack.Nome} to set the fleet...");
            admiralBlack.PosizionaFlotta();
            logger.Log(this, $"Request to Admiral {admiralBlack.Nome} to set the fleet completed.");

            int turn = 1;

            attacker = admiralWhite;
            defender = admiralBlack;

            while (!gameEnded && turn <= 500)
            {
                //logger.Log(this, $"Turn {turn} : Attacker is {attacker.Nome}, defender is {defender.Nome}.");

                //logger.Log(this, $"Request to attacker {attacker.Nome} to shot...");
                Coordinate sparo = attacker.Spara();
                logger.Log(this, $"[{turn}] Attacker {attacker.Nome} shooted at ({sparo.Riga}, {sparo.Colonna}).");

                // Forza lo sparo in (2,1)
                // sparo = new Coordinate(2, 1);

                //logger.Log(this, $"Request to defender {defender.Nome} to report shot effects...");
                EffettoSparo effetto = defender.Rapporto(sparo);
                logger.Log(this, $"Defender {defender.Nome} reported '{TestoEffetto(effetto)}'.");

                //logger.Log(this, $"Report to attacker {attacker.Nome} shot effects...");
                attacker.RiceviRapporto(effetto);
                //logger.Log(this, $"Report to attacker {attacker.Nome} delivered.");

                //logger.Log(this, $"Swap attacker and defender and start new turn.");
                SwapRoles();
                turn++;
            }

            return(new GameResult(winner, looser));
        }
Exemplo n.º 10
0
        //CREAZIONE METODO
        public EffettoSparo RiceviColpoEFaiRapporto(Coordinate sparo)
        {
            EffettoSparo risultato = EffettoSparo.Acqua;

            SeaCell seaCell = seaMap[sparo.Riga, sparo.Colonna];


            //se non è IsEmpty procedi con l'IF
            if (!seaCell.IsEmpty)
            {
                Nave nave      = seaCell.Nave;
                int  partIndex = seaCell.ParteIndex;

                if (nave.Colpita(partIndex))
                {
                    risultato = EffettoSparo.Affondato;
                }
            }


            return(risultato);
        }
Exemplo n.º 11
0
        public EffettoSparo RiceviColpoFaiRapporto(Coordinate coordinate)
        {
            EffettoSparo risultato = EffettoSparo.Acqua;

            SeaCell seaCell = seaMap[coordinate.Riga, coordinate.Colonna];

            if (!seaCell.IsEmpty)    //se non (!) è vuoto
            {
                //Errore:
                //risultato = EffettoSparo.Acqua;
                risultato = EffettoSparo.Colpito;

                Ship ship      = seaCell.Ship;
                int  partIndex = seaCell.PartIndex;

                if (ship.Colpita(partIndex))
                {
                    risultato = EffettoSparo.Affondato;
                }
            }
            return(risultato);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Metodo che restituisce il risultato dello sparo in base alle coordinate date
        /// </summary>
        /// <param name="coordinate"></param>
        /// <returns></returns>
        public EffettoSparo VerificaSparo(Coordinate coordinate)
        {
            EffettoSparo risultato = EffettoSparo.Acqua;

            if (mappa[coordinate.Riga, coordinate.Colonna] == string.Empty)
            {
                mappa[coordinate.Riga, coordinate.Colonna] = EffettoSparo.Acqua.ToString();
            }
            else if (mappa[coordinate.Riga, coordinate.Colonna] != EffettoSparo.Acqua.ToString())
            {
                var  navePosizionata = navi.Where(x => x.Id == mappa[coordinate.Riga, coordinate.Colonna]);
                Nave nave            = (Nave)navePosizionata;
                nave.DanneggiaNave(Convert.ToInt32(mappa[coordinate.Riga, coordinate.Colonna].Last()));
                if (!nave.isDeath)
                {
                    risultato = EffettoSparo.Colpito;
                }
                else
                {
                    risultato = EffettoSparo.Affondato;
                }
            }
            return(risultato);
        }
Exemplo n.º 13
0
        // metodo per la gestione del colpo ricevuto è di tipo EffettoSparo, definito nel Core
        public EffettoSparo RiceviColpoFaiRapporto(Coordinate sparo)
        {
            EffettoSparo risultato = EffettoSparo.Acqua;

            // identifico la cella su cui è arrivato il colpo sparo è di tipo coordinate, la quale è composta da due variabili ossia Riga e Colonna
            SeaCell seaCell = seaMap [sparo.Riga, sparo.Colonna];

            // testo la cella, verificando che NON sia vuota
            if (!seaCell.IsEmpty)
            {
                // visto che non c'è acqua, lo sparo è andato a segno
                risultato = EffettoSparo.Colpito;

                Nave nave      = seaCell.Nave;      // nave
                int  partIndex = seaCell.PartIndex; // parte della nave che è stata colpita

                if (nave.Colpita(partIndex))        // comunico che la nave è stata colpita e verifico se è stata affondata
                {
                    risultato = EffettoSparo.Affondato;
                }
            }

            return(risultato);
        }
Exemplo n.º 14
0
 public void RiceviRapporto(EffettoSparo effettoSparo)
 {
     // chiedo il rapporto, inviando effettoSparo
     tattico.RisultatoSparo(effettoSparo);
 }
 public void RiceviRapporto(EffettoSparo effettoSparo)
 {
     Console.WriteLine($"Risultato sparo = {GetRisultatoSparo(effettoSparo)}");
 }
Exemplo n.º 16
0
 public void RisultatoSparo(EffettoSparo effettoSparo)
 {
     //TODO
 }
Exemplo n.º 17
0
 public void RiceviRapporto(EffettoSparo effettoSparo)
 {
     tacticalManager.RisultatoSparo(effettoSparo);
 }
Exemplo n.º 18
0
 public void RiceviRapporto(EffettoSparo effettoSparo)
 {
     tattico.RisultatoSparo(effettoSparo);
 }
 public void RiceviRapporto(EffettoSparo effettoSparo)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 20
0
 public void RiceviRapporto(EffettoSparo effettoSparo)
 {
     artigliere.verificaUltimoSparo(effettoSparo);
 }