Beispiel #1
0
 public Figura OdigrajPotez(Figura figura, Pozicija pozicija, Ploca ploca)
 {
     if (!DobraFigura(figura))
     {
         throw new Exception("Kriva figura.");
     }
     return(figura.PostaviPoziciju(pozicija, ploca));
 }
Beispiel #2
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);
        }
Beispiel #3
0
        public void PozicijaSeMijenja(object sender, EventArgs eventArgs)
        {
            Figura            figura = (Figura)sender;
            PozicijaEventArgs pea    = eventArgs as PozicijaEventArgs;

            if (figura.Pozicija != null)
            {
                figura.LegalanPotez(pea.Pozicija, pea.Ploca);
            }
        }
Beispiel #4
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);
        }
Beispiel #5
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;
        }
Beispiel #6
0
 public void IspisiPlocu()
 {
     //Console.SetWindowSize(600, 400);
     for (int i = 0; i < 8; i++)
     {
         for (int j = 0; j < 8; j++)
         {
             if (stanje[i, j] == null)
             {
                 Console.Write("----");
             }
             else
             {
                 Figura figura = stanje[i, j];
                 Console.Write(figura.ToString(figura.Pozicija));
             }
             Console.Write("  |  ");
         }
         Console.WriteLine();
         Console.Write("--------------------------------------------------------------------");
         Console.WriteLine();
     }
 }
Beispiel #7
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);
        }
Beispiel #8
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);
        }
Beispiel #9
0
 public Figura VratiFiguruIstogTipaBoje(Figura figura)
 {
     return(hashFigura.Where(x => x.Boja == figura.Boja && x.GetType() == figura.GetType()).FirstOrDefault());
 }
Beispiel #10
0
 public bool DobraFigura(Figura figura)
 {
     return(this.Boja == figura.Boja);
 }