예제 #1
0
 public Figura OdigrajPotez(Figura figura, Pozicija pozicija, Ploca ploca)
 {
     if (!DobraFigura(figura))
     {
         throw new Exception("Kriva figura.");
     }
     return(figura.PostaviPoziciju(pozicija, ploca));
 }
예제 #2
0
        public override bool LegalanPotez(Pozicija novaPozicija, Ploca ploca)
        {
            base.LegalanPotez(novaPozicija, ploca);



            return(true);
        }
예제 #3
0
파일: Figura.cs 프로젝트: drazen41/Chess
        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);
        }
예제 #4
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);
        }
예제 #5
0
파일: Figura.cs 프로젝트: drazen41/Chess
 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);
 }
예제 #6
0
파일: Figura.cs 프로젝트: drazen41/Chess
        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);
        }
예제 #7
0
        public static Kralj VratiKraljaSaPloce(Figura figura, Ploca ploca)
        {
            Kralj kralj = null;

            if (figura.Boja == Boja.Bijeli)
            {
                kralj = new Kralj(Boja.Bijeli);
            }
            else
            {
                kralj = new Kralj(Boja.Crni);
            }
            return(ploca.VratiFiguruIstogTipaBoje(kralj) as Kralj);
        }
예제 #8
0
파일: Skakac.cs 프로젝트: drazen41/Chess
        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);
        }
예제 #9
0
 public override bool PodZastitom(Ploca ploca)
 {
     throw new NotImplementedException();
 }
예제 #10
0
 public override string ToString(Pozicija pozicija)
 {
     //return this.Boja.ToString() + " Kralj " + pozicija.Horizontalno + "," + pozicija.Vertikalno;
     return("K" + Ploca.SkracenaBoja(this.Boja) + "-" + this.Id);
 }
예제 #11
0
파일: Figura.cs 프로젝트: drazen41/Chess
 public abstract bool PodZastitom(Ploca ploca);
예제 #12
0
파일: Top.cs 프로젝트: drazen41/Chess
        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);
        }
예제 #13
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);
        }