示例#1
0
        /// <summary>
        /// metoda,ki naredi premik ene figure na šahovnici s tem da ustvari nov objekt Sahovnica
        /// </summary>
        /// <param name="x">int: vrsta novega polja figure</param>
        /// <param name="y">int: stolpec novega polja figure</param>
        /// <param name="f">Object: objekt Figura,katero želimo premakniti</param>
        /// <returns>Object: objekt Sahovnica,ki predstavlja novo sahovnico</returns>
        public Sahovnica Premik(int novX, int novY, Figura f)
        {
            //novi sahovnici najprej naredimo ustrezno pozicijo
            string[,] novaSahovnica = (string[,])this.sahovnica.Clone();
            novaSahovnica[f.x, f.y] = ".";
            novaSahovnica[novX, novY] = f.IzpisFigure();

            //preverimo ali bo še možno narediti rokade
            bool novaMozMalRokBeli = this.moznaMalaRokadaBeli;
            bool novaMozMalRokCrni = this.moznaMalaRokadaCrni;
            bool novaMozVelRokBeli = this.moznaVelikaRokadaBeli;
            bool novaMozVelRokCrni = this.moznaVelikaRokadaCrni;
            int novPravilo50 = this.pravilo50+1;
            List<int[]> noviMozniEP = new List<int[]>();

            //če je prislo do jemanja ali se premakne kmet...zacnemo pravilo50 steti od zacetka
            if (f.ImeFigure() == "P" || this.sahovnica[novX, novY] != ".")
                novPravilo50 = 0;

            //pogledamo če bodo v naslednji potezi mozni EP
            if (f.ImeFigure() == "P")
            {
                if (this.kdo == "b")
                {
                    if (f.x == 1 && novX == 3)
                    {
                        if (f.y < 7 && f.y > 0)
                        {
                            if (this.sahovnica[3, f.y - 1] == "cP")
                            {
                                noviMozniEP.Add(new int[2] { f.y - 1, f.y });
                            }
                            if (this.sahovnica[3, f.y + 1] == "cP")
                                noviMozniEP.Add(new int[2] { f.y + 1, f.y });
                        }
                        else if (f.y == 7 && this.sahovnica[3, f.y - 1] == "cP")
                            noviMozniEP.Add(new int[2] { f.y - 1, f.y });
                        else if (f.y == 0 && this.sahovnica[3, f.y + 1] == "cP")
                            noviMozniEP.Add(new int[2] { f.y + 1, f.y });
                    }
                }
                if (this.kdo == "c")
                {
                    if (f.x == 6 && novX == 4)
                    {
                        if (f.y < 7 && f.y > 0)
                        {
                            if (this.sahovnica[4, f.y - 1] == "bP")
                                noviMozniEP.Add(new int[2] { f.y - 1, f.y });
                            if (this.sahovnica[4, f.y + 1] == "bP")
                                noviMozniEP.Add(new int[2] { f.y + 1, f.y });
                        }
                        else if (f.y == 7 && this.sahovnica[4, f.y - 1] == "bP")
                            noviMozniEP.Add(new int[2] { f.y - 1, f.y });
                        else if (f.y == 0 && this.sahovnica[4, f.y + 1] == "bP")
                            noviMozniEP.Add(new int[2] { f.y + 1, f.y });
                    }
                }
            }
            if (noviMozniEP.Count() == 0)
                noviMozniEP = null;

            //če beli premakne katero od trdnjav ali kralja
            if (f.x == 0)
            {
                if (f.y == 0)
                    novaMozVelRokBeli = false;

                else if (f.y == 7)
                    novaMozMalRokBeli = false;

                else if (f.y == 4)
                {
                    novaMozMalRokBeli = false;
                    novaMozVelRokBeli = false;
                }
            }

            //če črni premakne katero od trdnjav ali kralja
            else if (f.x == 7)
            {
                if (f.y == 0)
                    novaMozVelRokCrni = false;

                else if (f.y == 7)
                    novaMozMalRokCrni = false;

                else if (f.y == 4)
                {
                    novaMozMalRokCrni = false;
                    novaMozVelRokCrni = false;
                }
            }
            //če je bil izveden premik na katero od mest trdnjav ali kralja
            if (novX == 0)
            {
                if (novY == 0)
                    novaMozVelRokBeli = false;
                else if (novY == 7)
                    novaMozMalRokBeli = false;
                else if (novY == 4)
                {
                    novaMozMalRokBeli = false;
                    novaMozVelRokBeli = false;
                }
            }
            else if (novX == 7)
            {
                if (novY == 0)
                    novaMozVelRokCrni = false;
                else if (novY == 7)
                    novaMozMalRokCrni = false;
                else if (novY == 4)
                {
                    novaMozMalRokCrni = false;
                    novaMozVelRokCrni = false;
                }

            }

            //nato ustvarimo nov objekt Sahovnica z novimi parametri
            Sahovnica sah = new Sahovnica(novaSahovnica, this.kdo, novaMozMalRokBeli, novaMozMalRokCrni, novaMozVelRokBeli, novaMozVelRokCrni, noviMozniEP, novPravilo50,this.kateraPoteza+1);

            return sah;
        }
示例#2
0
        /// <summary>
        /// metoda,ki za vsako figuro pokliče ustrezno metodo glede na to kakšne vrste figura je
        /// </summary>
        /// <param name="fig">Object: objekt figura</param>
        /// <returns>List: seznam vseh potez te figure</returns>
        public List<int[]> VsePotezeFigura(Figura fig)
        {
            //seznam kjer bomo shranili mozne premike
            List<int[]> vsePot = new List<int[]>();

            //kmet...
            if (fig.ImeFigure() == "P")
            {
                vsePot = Kmet(fig);
            }

            //skakač
            else if (fig.ImeFigure() == "S")
            {
                vsePot = Skakac(fig);
            }

            //lovec
            else if (fig.ImeFigure() == "L")
            {
                vsePot = Lovec(fig);
            }

            //trdnjava
            else if (fig.ImeFigure() == "T")
            {
                vsePot = Trdnjava(fig);
            }

            //dama
            else if (fig.ImeFigure() == "D")
            {
                vsePot = Dama(fig);
            }

            //kralj
            else if (fig.ImeFigure() == "K")
            {
                vsePot = Kralj(fig);
            }

            return vsePot;
        }