示例#1
0
        public IEnumerable <Polje> DajKandidateZaVertikalniBrod()
        {
            List <Polje> kandidati = new List <Polje>();
            var          slobodna  = mreža.DajSlobodnaPolja();

            for (int s = 0; s < mreža.Stupaca; ++s)
            {
                int brojačPolja = 0;
                for (int r = 0; r < mreža.Redaka; ++r)
                {
                    Polje p = new Polje(r, s);
                    if (slobodna.Contains(p))
                    {
                        ++brojačPolja;
                    }
                    else
                    {
                        brojačPolja = 0;
                    }

                    if (brojačPolja >= duljinaBroda)
                    {
                        for (int rr = r - duljinaBroda + 1; rr <= r; ++rr)
                        {
                            kandidati.Add(new Polje(rr, s));
                        }
                    }
                }
            }
            return(kandidati);
        }
示例#2
0
 public RezultatGađanja Gađaj(Polje polje)
 {
     foreach (Brod b in brodovi)
     {
         var rezultat = b.Gađaj(polje);
         if (rezultat != RezultatGađanja.Promašaj)
         {
             return(rezultat);
         }
     }
     return(RezultatGađanja.Promašaj);
 }
示例#3
0
 public Mreža(int redaka, int stupaca)
 {
     Redaka  = redaka;
     Stupaca = stupaca;
     polja   = new Polje[Redaka, Stupaca];
     for (int r = 0; r < redaka; ++r)
     {
         for (int s = 0; s < stupaca; ++s)
         {
             polja[r, s] = new Polje(r, s);
         }
     }
 }
示例#4
0
 public RezultatGađanja Gađaj(Polje p)
 {
     if (!Polja.Contains(p))
     {
         return(RezultatGađanja.Promašaj);
     }
     pogođenaPolja.Add(p);
     if (pogođenaPolja.Count == Polja.Count())
     {
         return(RezultatGađanja.Potonuće);
     }
     return(RezultatGađanja.Pogodak);
 }
        private bool ImaDovoljnoPoljaIspod(Polje p, IEnumerable <Polje> slobodnaPolja, int duljinaBroda)
        {
            int redak  = p.Redak;
            int stupac = p.Stupac;

            for (int r = redak + 1; r < redak + duljinaBroda; ++r)
            {
                if (!slobodnaPolja.Contains(new Polje(r, stupac)))
                {
                    return(false);
                }
            }
            return(true);
        }
        private bool ImaDovoljnoPoljaDesno(Polje p, IEnumerable <Polje> slobodnaPolja, int duljinaBroda)
        {
            int redak  = p.Redak;
            int stupac = p.Stupac;

            for (int s = stupac + 1; s < stupac + duljinaBroda; ++s)
            {
                if (!slobodnaPolja.Contains(new Polje(redak, s)))
                {
                    return(false);
                }
            }
            return(true);
        }
示例#7
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            if (obj.GetType() != GetType())
            {
                return(false);
            }
            Polje p = (Polje)obj;

            return((p.Redak == Redak) && (p.Stupac == Stupac));
        }
示例#8
0
        public IEnumerable <Polje> DajPoljaZaBrod(Orijentacija smjer, Polje početno, int duljinaBroda)
        {
            int          redak       = početno.Redak;
            int          stupac      = početno.Stupac;
            int          deltaRedak  = smjer == Orijentacija.Horizontalno ? 0 : 1;
            int          deltaStupac = smjer == Orijentacija.Vertikalno ? 0 : 1;
            List <Polje> poljaZaBrod = new List <Polje>();

            for (int i = 0; i < duljinaBroda; ++i)
            {
                poljaZaBrod.Add(polja[redak, stupac]);
                EliminirajPolje(redak, stupac);
                redak  += deltaRedak;
                stupac += deltaStupac;
            }
            return(poljaZaBrod);
        }
 public KružniPucač(Polje prvoPogođeno, Mreža mreža)
 {
     pogođenaPolja.Add(prvoPogođeno);
     this.mreža = mreža;
 }
示例#10
0
 public void EliminirajPolje(Polje p)
 {
     polja[p.Redak, p.Stupac] = null;
 }
示例#11
0
        public Tuple <int, int> Gadjaj()
        {
            Polje p = topnistvo.UputiPucanj();

            return(new Tuple <int, int>(p.Redak, p.Stupac));
        }
 public PoljeSmjer(Orijentacija smjer, Polje polje)
 {
     Smjer = smjer;
     Polje = polje;
 }