Esempio n. 1
0
        public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca)
        {
            base.LegalanPotez(novaPozicija, ploca);
            Top top = new Top(this.Boja, this.Id);

            top.Pozicija.PostaviHorizontalno(this.Pozicija.Horizontalno).PostaviVertikalno(this.Pozicija.Vertikalno);
            Lovac lovac = new Lovac(this.Boja, this.Id);

            lovac.Pozicija.PostaviHorizontalno(this.Pozicija.Horizontalno).PostaviVertikalno(this.Pozicija.Vertikalno);
            bool legalan = true;

            try
            {
                legalan = top.LegalanPotez(novaPozicija, ploca);
            }
            catch (IllegalMoveException ime)
            {
                if (ime.NemogucPotez)
                {
                    legalan = lovac.LegalanPotez(novaPozicija, ploca);
                }
                else
                {
                    throw ime;
                }
            }



            return(true);
        }
Esempio n. 2
0
        public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca)
        {
            base.LegalanPotez(novaPozicija, ploca);



            return(true);
        }
Esempio n. 3
0
 public Figura OdigrajPotez(Figura figura, Pozicija pozicija, Ploca ploca)
 {
     if (!DobraFigura(figura))
     {
         throw new Exception("Kriva figura.");
     }
     return(figura.PostaviPoziciju(pozicija, ploca));
 }
Esempio n. 4
0
        private void PozicijaPromijenjena(object sender, EventArgs e)
        {
            PozicijaEventArgs pea      = e as PozicijaEventArgs;
            Ploca             ploca    = pea.Ploca;
            Figura            figura   = sender as Figura;
            Pozicija          pozicija = pea.Pozicija;

            ploca.AzurirajStanje(figura, pozicija);
        }
Esempio n. 5
0
        public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca)
        {
            base.LegalanPotez(novaPozicija, ploca);
            if (Math.Abs(this.Pozicija.Horizontalno - novaPozicija.Horizontalno) > 1 || Math.Abs(this.Pozicija.Vertikalno - novaPozicija.Vertikalno) > 1)
            {
                throw new IllegalMoveException("Illegal move", true);
            }


            return(true);
        }
Esempio n. 6
0
 public virtual bool LegalanPotez(Pozicija pozicija, Ploca ploca)
 {
     if (this.Pozicija.Horizontalno == pozicija.Horizontalno && this.Pozicija.Vertikalno == pozicija.Vertikalno)
     {
         throw new NoMoveException("No move");
     }
     if (pozicija.Horizontalno < 0 || pozicija.Horizontalno > 7 || pozicija.Vertikalno < 0 || pozicija.Vertikalno > 7)
     {
         throw new Exception("Illegal move");
     }
     return(true);
 }
Esempio n. 7
0
        public Figura PostaviPoziciju(Pozicija pozicija, Ploca ploca)
        {
            OnPozicijaSeMijenja(this, new PozicijaEventArgs {
                Pozicija = pozicija, Ploca = ploca
            });
            OnPozicijaPromijenjena(this, new PozicijaEventArgs {
                Pozicija = pozicija, Ploca = ploca
            });
            this.Pozicija = pozicija;

            return(this);
        }
Esempio n. 8
0
 public Figura PostaviPoziciju(Pozicija pozicija)
 {
     if (Ploca.Potez != 0)
     {
         throw new Exception("Krivi poziv metode");
     }
     if (this.Pozicija == null)
     {
         this.Pozicija = new Pozicija();
     }
     this.Pozicija = pozicija;
     return(this);
 }
Esempio n. 9
0
 public Pozicija PostaviVertikalno(int vrijednost)
 {
     if (this == null)
     {
         Pozicija pozicija = new Pozicija();
         pozicija.Vertikalno = vrijednost;
         return(pozicija);
     }
     else
     {
         this.Vertikalno = vrijednost;
         return(this);
     }
 }
Esempio n. 10
0
        internal void AzurirajStanje(Figura figura, Pozicija novaPozicija)
        {
            var staraPozicija = figura.Pozicija;

            pozicijaFigura[staraPozicija] = null;

            stanje[figura.Pozicija.Horizontalno, figura.Pozicija.Vertikalno] = null;
            string kljuc = PoljeZaKolonu(figura.Pozicija.Vertikalno) + (figura.Pozicija.Horizontalno + 1);
            var    fig   = dict[kljuc];

            dict[kljuc]     = null;
            figura.Pozicija = novaPozicija;
            pozicijaFigura[novaPozicija] = figura;
            kljuc       = PoljeZaKolonu(novaPozicija.Vertikalno) + novaPozicija.Horizontalno;
            dict[kljuc] = figura;
            stanje[novaPozicija.Horizontalno, novaPozicija.Vertikalno] = figura;
        }
Esempio n. 11
0
        public Pozicija PozicijaZaPolje(string polje)
        {
            var      slovo    = polje[0].ToString().ToUpper();
            var      kolona   = polje[1].ToString();
            Pozicija pozicija = new Pozicija();

            switch (slovo)
            {
            case "A":
                pozicija.PostaviVertikalno(0).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            case "B":
                pozicija.PostaviVertikalno(1).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            case "C":
                pozicija.PostaviVertikalno(2).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            case "D":
                pozicija.PostaviVertikalno(3).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            case "E":
                pozicija.PostaviVertikalno(4).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            case "F":
                pozicija.PostaviVertikalno(5).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            case "G":
                pozicija.PostaviVertikalno(6).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            case "H":
                pozicija.PostaviVertikalno(7).PostaviHorizontalno(int.Parse(kolona) - 1);
                break;

            default:
                break;
            }
            return(pozicija);
        }
Esempio n. 12
0
        public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca)
        {
            base.LegalanPotez(novaPozicija, ploca);
            int horizontalno = this.Pozicija.Horizontalno > novaPozicija.Horizontalno ?
                               this.Pozicija.Horizontalno - novaPozicija.Horizontalno : novaPozicija.Horizontalno - this.Pozicija.Horizontalno;
            int vertikalno = this.Pozicija.Vertikalno > novaPozicija.Vertikalno ?
                             this.Pozicija.Vertikalno - novaPozicija.Vertikalno : novaPozicija.Vertikalno - this.Pozicija.Vertikalno;

            if (!((horizontalno == 2 && vertikalno == 1) || (horizontalno == 1 && vertikalno == 2)))
            {
                throw new IllegalMoveException("Illegal move");
            }

            var figura = ploca.VratiFiguru(novaPozicija);

            if (figura != null && figura.Boja == this.Boja)
            {
                throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
            }
            return(true);
        }
Esempio n. 13
0
 public override string ToString(Pozicija pozicija)
 {
     //return this.Boja.ToString() + " Kralj " + pozicija.Horizontalno + "," + pozicija.Vertikalno;
     return("K" + Ploca.SkracenaBoja(this.Boja) + "-" + this.Id);
 }
Esempio n. 14
0
 public abstract string ToString(Pozicija pozicija);
Esempio n. 15
0
        public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca)
        {
            base.LegalanPotez(novaPozicija, ploca);

            Figura figura = null;

            if (this.Pozicija.Horizontalno != novaPozicija.Horizontalno && this.Pozicija.Vertikalno != novaPozicija.Vertikalno)
            {
                throw new IllegalMoveException("Illegal move", true);
            }
            if (this.Pozicija.Vertikalno < novaPozicija.Vertikalno)
            {
                for (int i = this.Pozicija.Vertikalno + 1; i <= novaPozicija.Vertikalno; i++)
                {
                    figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(novaPozicija.Horizontalno).PostaviVertikalno(i));

                    if (figura != null && figura.Boja == this.Boja)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                    else if (figura != null && figura.Pozicija.Vertikalno < novaPozicija.Vertikalno)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                }
            }
            if (this.Pozicija.Vertikalno > novaPozicija.Vertikalno)
            {
                for (int i = this.Pozicija.Vertikalno - 1; i >= novaPozicija.Vertikalno; i--)
                {
                    figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(novaPozicija.Horizontalno).PostaviVertikalno(i));
                    if (figura != null && figura.Boja == this.Boja)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                    else if (figura != null && figura.Pozicija.Horizontalno < novaPozicija.Horizontalno)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                }
            }

            if (this.Pozicija.Horizontalno < novaPozicija.Horizontalno)
            {
                for (int i = this.Pozicija.Horizontalno + 1; i <= novaPozicija.Horizontalno; i++)
                {
                    figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(i).PostaviVertikalno(novaPozicija.Vertikalno));
                    if (figura != null && figura.Boja == this.Boja)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                    else if (figura != null && figura.Pozicija.Horizontalno < novaPozicija.Horizontalno)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                }
            }
            if (this.Pozicija.Horizontalno > novaPozicija.Horizontalno)
            {
                for (int i = this.Pozicija.Horizontalno - 1; i >= novaPozicija.Horizontalno; i--)
                {
                    figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(i).PostaviVertikalno(novaPozicija.Vertikalno));
                    if (figura != null && figura.Boja == this.Boja)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                    else if (figura != null && figura.Pozicija.Horizontalno < novaPozicija.Horizontalno)
                    {
                        throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                    }
                }
            }

            var kralj = Kralj.VratiKraljaSaPloce(this, ploca);

            return(true);
        }
Esempio n. 16
0
        public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca)
        {
            base.LegalanPotez(novaPozicija, ploca);
            int horizontalno = Math.Abs(this.Pozicija.Horizontalno - novaPozicija.Horizontalno);
            int vertikalno   = Math.Abs(this.Pozicija.Vertikalno - novaPozicija.Vertikalno);

            if (horizontalno != vertikalno)
            {
                throw new IllegalMoveException("Illegal move", true);
            }
            Figura figura = null;

            if (this.Pozicija.Horizontalno > novaPozicija.Horizontalno)
            {
                int ver = this.Pozicija.Vertikalno;
                for (int i = this.Pozicija.Horizontalno; i > novaPozicija.Horizontalno; i--)
                {
                    int hor = i - 1;
                    if (this.Pozicija.Vertikalno > novaPozicija.Vertikalno)
                    {
                        figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(--ver));
                        if (figura != null)
                        {
                            if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno)
                            {
                                if (this.Boja == figura.Boja)
                                {
                                    throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                                }
                            }
                            else
                            {
                                throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                            }
                        }
                    }
                    else
                    {
                        figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(++ver));
                        if (figura != null)
                        {
                            if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno)
                            {
                                if (this.Boja == figura.Boja)
                                {
                                    throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                                }
                            }
                            else
                            {
                                throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                            }
                        }
                    }
                }
            }
            else
            {
                int ver = this.Pozicija.Vertikalno;
                for (int i = this.Pozicija.Horizontalno; i < novaPozicija.Horizontalno; i++)
                {
                    int hor = i + 1;

                    if (this.Pozicija.Vertikalno > novaPozicija.Vertikalno)
                    {
                        //ver = this.Pozicija.Vertikalno - i;
                        figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(--ver));
                        if (figura != null)
                        {
                            if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno)
                            {
                                if (this.Boja == figura.Boja)
                                {
                                    throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                                }
                            }
                            else
                            {
                                throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                            }
                        }
                    }
                    else
                    {
                        figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(hor).PostaviVertikalno(++ver));
                        if (figura != null)
                        {
                            if (hor == novaPozicija.Horizontalno && ver == novaPozicija.Vertikalno)
                            {
                                if (this.Boja == figura.Boja)
                                {
                                    throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                                }
                            }
                            else
                            {
                                throw new IllegalMoveException("Figura " + figura.GetType().Name + " na putu.");
                            }
                        }
                    }
                }
            }


            return(true);
        }
Esempio n. 17
0
 public Figura VratiFiguru(Pozicija pozicija)
 {
     return(stanje[pozicija.Horizontalno, pozicija.Vertikalno]);
 }