public void Igraj() { rezultatGadjanja rez = rezultatGadjanja.nepoznato; while (true) { // za pocetak mi igramo prvi, dok ne smislimo bolji algoritam Polje p = ai.Gadjaj(); rez = (rezultatGadjanja)protivnik.JaviRezultat(new Tuple <int, int>(p.Redak, p.Stupac)); if (rez == rezultatGadjanja.PORAZ) { this.tbDnevnik.Text = "Mi smo pobjedili!"; break; } this.Invoke((MethodInvoker) delegate { tbDnevnik.AppendText("(" + p.Redak + ", " + p.Stupac + "): " + rez.ToString() + "\n"); }); Brod b = new Brod(ai.zap.trenutnaMeta); ai.ObradiPogodak(rez); protivnikFlotaGUI.DodajPolje(p, rez); if (rez == rezultatGadjanja.potopljen) { protivnikFlotaGUI.PotopiBrod(b); } this.Invoke((MethodInvoker) delegate { protivnikFlotaGUI.Invalidate(); }); // sada igra protivnik Tuple <int, int> koord = protivnik.Gadjaj(); p = new Polje(koord.Item1, koord.Item2); rez = flota.ObradiPogodak(p.Redak, p.Stupac); if (rez == rezultatGadjanja.PORAZ) { this.tbDnevnik.Text = "Protivnik je pobjedio!"; break; } this.Invoke((MethodInvoker) delegate { tbDnevnik.AppendText("@@ (" + p.Redak + ", " + p.Stupac + "): " + rez.ToString() + "\n"); }); protivnik.ObradiPogodak((OOMPotapanje.mojRezultatGadjanja)rez); this.Invoke((MethodInvoker) delegate { mojaFlotaGUI.ZadajFlotu(flota); }); // spavaj da ne bude prebrzo Thread.Sleep(500); } }
public void ObradiPogodak(rezultatGadjanja rezultat) { this.zap.rezultatGadjanja = rezultat; switch (rezultat) { case rezultatGadjanja.pogodak: this.zap.trenutnaMeta.Add(this.zap.gadjanoPolje); break; case rezultatGadjanja.potopljen: this.zap.trenutnaMeta.Add(this.zap.gadjanoPolje); this.flota.Remove(this.zap.trenutnaMeta.Count); this.zap.trenutnaMeta.Clear(); break; default: break; } this.Mreza.EliminirajPolje(this.zap.gadjanoPolje); }
public void Flota_ObradiPogodakIspravnoJavljaPotapanje() { List <Polje> polja = new List <Polje> { new Polje(0, 1), new Polje(0, 2) }; Brod b = new Brod(polja); Flota f = new Flota(); f.DodajBrod(b); List <Polje> polja2 = new List <Polje> { new Polje(2, 1), new Polje(2, 2) }; Brod b2 = new Brod(polja2); f.DodajBrod(b2); rezultatGadjanja rez = f.ObradiPogodak(0, 2); rez = f.ObradiPogodak(0, 1); Assert.AreEqual(rezultatGadjanja.potopljen, rez); Assert.IsFalse(f.Brodovi.Contains(b)); }
public void DodajPolje(Polje p, rezultatGadjanja rez) { try { gadjanaPolja.Add(p, rez); } catch { gadjanaPolja[p] = rez; } }