public Topništvo(int redaka, int stupaca, int[] duljineBrodova) { mreža = new Mreža(redaka, stupaca); eliminatorPolja = new KlasičniEliminatorPolja(); this.duljineBrodova = new List <int>(duljineBrodova); this.duljineBrodova.Sort((d1, d2) => d2 - d1); PromijeniTaktikuUNapipavanje(); }
private void EliminirajPoljaOkoBroda(Mreža mreža, IEnumerable <Polje> brodskaPolja) { IEnumerable <Polje> zaEliminirati = eliminatorPolja.PoljaKojaTrebaUklonitiOkoBroda(brodskaPolja, mreža.Redaka, mreža.Stupaca); foreach (Polje p in zaEliminirati) { mreža.EliminirajPolje(p); } }
public Flota SložiFlotu(int redaka, int stupaca, int[] duljineBrodova) { const int brojPokušaja = 5; for (int i = 0; i < brojPokušaja; ++i) { try { Mreža mreža = new Mreža(redaka, stupaca); return(SložiBrodove(duljineBrodova, mreža)); } catch (ApplicationException) { } } // ako ne uspije složiti niti nakon 5 pokušaja, baca iznimku throw new ApplicationException(); }
private Flota SložiBrodove(int[] duljineBrodova, Mreža mreža) { Flota flota = new Flota(); // za svaku duljinu broda: for (int i = 0; i < duljineBrodova.Length; ++i) { var slobodnaPolja = mreža.DajSlobodnaPolja(); var pp = izbornikPolja.IzaberiPočetnoPolje(slobodnaPolja, duljineBrodova[i]); var pbr = mreža.DajPoljaZaBrod(pp.Smjer, pp.Polje, duljineBrodova[i]); Brod b = new Brod(pbr); flota.DodajBrod(b); EliminirajPoljaOkoBroda(mreža, pbr); } return(flota); }
public KružniPucač(Polje prvoPogođeno, Mreža mreža) { pogođenaPolja.Add(prvoPogođeno); this.mreža = mreža; }
public Napipač(Mreža mreža, int duljinaBroda) { this.mreža = mreža; this.duljinaBroda = duljinaBroda; }
public SustavniPucač(IEnumerable <Polje> pogođena, Mreža mreža) { pogođenaPolja.AddRange(pogođena); pogođenaPolja.Sort((a, b) => a.Redak - b.Redak + a.Stupac - b.Stupac); this.mreža = mreža; }