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); }
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(""); } }
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); }
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)); }
//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); }
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); }
/// <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); }
// 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); }
public void RiceviRapporto(EffettoSparo effettoSparo) { // chiedo il rapporto, inviando effettoSparo tattico.RisultatoSparo(effettoSparo); }
public void RiceviRapporto(EffettoSparo effettoSparo) { Console.WriteLine($"Risultato sparo = {GetRisultatoSparo(effettoSparo)}"); }
public void RisultatoSparo(EffettoSparo effettoSparo) { //TODO }
public void RiceviRapporto(EffettoSparo effettoSparo) { tacticalManager.RisultatoSparo(effettoSparo); }
public void RiceviRapporto(EffettoSparo effettoSparo) { tattico.RisultatoSparo(effettoSparo); }
public void RiceviRapporto(EffettoSparo effettoSparo) { throw new NotImplementedException(); }
public void RiceviRapporto(EffettoSparo effettoSparo) { artigliere.verificaUltimoSparo(effettoSparo); }