Example #1
0
 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;
 }