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); }
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); }
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); } } }
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); }
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)); }
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; }
public void EliminirajPolje(Polje p) { polja[p.Redak, p.Stupac] = null; }
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; }