public virtual Polje PoljeZaSmjer(smjer odabrani, Polje zadnjiPogodak)
        {
            switch (odabrani)
            {
            case smjer.gore:
                return(new Polje(zadnjiPogodak.Redak - 1, zadnjiPogodak.Stupac));

            case smjer.dolje:
                return(new Polje(zadnjiPogodak.Redak + 1, zadnjiPogodak.Stupac));

            case smjer.lijevo:
                return(new Polje(zadnjiPogodak.Redak, zadnjiPogodak.Stupac - 1));

            case smjer.desno:
                return(new Polje(zadnjiPogodak.Redak, zadnjiPogodak.Stupac + 1));

            default: return(null);    //PROBLEM
            }
        }
        public smjer SuprotniSmjer(smjer trenutni)
        {
            switch (trenutni)
            {
            case smjer.gore:
                return(smjer.dolje);

            case smjer.dolje:
                return(smjer.gore);

            case smjer.lijevo:
                return(smjer.desno);

            case smjer.desno:
                return(smjer.lijevo);

            default:
                return(smjer.nepoznato);
            }
        }
        public override Polje SlijedecePolje()
        {
            // Stanja koja vode u ovaj objekt su:
            // A) prvi pogodak broda (smjer jos nije odabran)
            // B) promasaj nakon sto smo ranije pogodili - treba mijenjati smjer

            Polje prviPogodak   = zap.trenutnaMeta.First();
            Polje zadnjiPogodak = zap.trenutnaMeta.Last();
            smjer noviSmjer     = smjer.nepoznato;

            if (zap.rezultatGadjanja == rezultatGadjanja.pogodak)
            {
                // A - izaberi nasumice smjer i gadjaj
                if (zap.moguciSmjerovi.Count == 0)
                {
                    zap.moguciSmjerovi = IzracunajMoguceSmjerove(prviPogodak);
                }
                noviSmjer = zap.moguciSmjerovi.ElementAt(zap.rand.Next(zap.moguciSmjerovi.Count));
                zap.moguciSmjerovi.Remove(noviSmjer);
                return(PoljeZaSmjer(noviSmjer, zadnjiPogodak));
            }
            else
            {
                // B - ako postoji, izaberi suprotni smjer i gadjaj od prvog! pogotka
                //     brodovi se ne dodiruju -> nije moguce slucajno pogoditi drugi brod i izazvati zabunu smjera
                zap.pronadjeniSmjer = SuprotniSmjer(zap.pronadjeniSmjer);
                if (zap.pronadjeniSmjer == smjer.nepoznato)
                {
                    noviSmjer = zap.moguciSmjerovi.ElementAt(zap.rand.Next(zap.moguciSmjerovi.Count));
                    zap.moguciSmjerovi.Remove(noviSmjer);
                    return(PoljeZaSmjer(noviSmjer, zadnjiPogodak));
                }
                else
                {
                    return(PoljeZaSmjer(zap.pronadjeniSmjer, prviPogodak));
                }
            }
        }