Esempio n. 1
0
        /// <summary>
        /// metoda,ki za skakača izračuna vsa njegova delovanja
        /// </summary>
        /// <param name="fig">Object: objekt Figura,ki predstavlja skakača</param>
        /// <returns>list: seznam vseh potez skakača</returns>
        public List<int[]> Skakac(Figura fig)
        {
            List<int[]> vsePot = new List<int[]>();

            //generiramo tabelo tabel,vseh novih koordinat skakača
            int[][] tockaSkak = new int[8][];

            int[] T1 = new int[2]; T1[0] = fig.x + 2; T1[1] = fig.y + 1; tockaSkak[0] = T1;
            int[] T2 = new int[2]; T2[0] = fig.x + 2; T2[1] = fig.y - 1; tockaSkak[1] = T2;
            int[] T3 = new int[2]; T3[0] = fig.x + 1; T3[1] = fig.y + 2; tockaSkak[2] = T3;
            int[] T4 = new int[2]; T4[0] = fig.x + 1; T4[1] = fig.y - 2; tockaSkak[3] = T4;
            int[] T5 = new int[2]; T5[0] = fig.x - 2; T5[1] = fig.y + 1; tockaSkak[4] = T5;
            int[] T6 = new int[2]; T6[0] = fig.x - 2; T6[1] = fig.y - 1; tockaSkak[5] = T6;
            int[] T7 = new int[2]; T7[0] = fig.x - 1; T7[1] = fig.y + 2; tockaSkak[6] = T7;
            int[] T8 = new int[2]; T8[0] = fig.x - 1; T8[1] = fig.y - 2; tockaSkak[7] = T8;

            //pregledamo vsa nova polja
            for (int i = 0; i < 8; i++)
            {
                //če so na šahovnici...
                if ((tockaSkak[i][0] < 8) && (tockaSkak[i][0] >= 0) && (tockaSkak[i][1] < 8) && (tockaSkak[i][1] >= 0))
                {
                    //če na njih ni lastne figure...jih dodamo
                    if ("" + this.sahovnica[tockaSkak[i][0], tockaSkak[i][1]][0] != fig.barvaFigure())
                    {
                        vsePot.Add(tockaSkak[i]);
                    }
                }
            }
            return vsePot;
        }
Esempio n. 2
0
        /// <summary>
        /// metoda,ki za trdnjavo izračuna vsa njena delovanja
        /// </summary>
        /// <param name="fig">Object: objekt Figura,ki predstavlja trdnjavo</param>
        /// <returns>list: seznam vseh potez trdnjave</returns>
        public List<int[]> Trdnjava(Figura fig)
        {
            List<int[]> vsePot = new List<int[]>();

            //4 smeri premikov
            string[] vseSmeri = new string[4];
            vseSmeri[0] = "+0";
            vseSmeri[1] = "-0";
            vseSmeri[2] = "0+";
            vseSmeri[3] = "0-";

            //gremo v vsako smer
            foreach (string smer in vseSmeri)
            {
                //se premikamo po 1
                for (int i = 1; i < 8; i++)
                {
                    //tu shranjujemo koordinate novih polj
                    int novX = 42; int novY = 42;

                    //koordinate so odvisne od smeri in pa števila korakov
                    if (smer == "+0")
                    {
                        novX = fig.x + i;
                        novY = fig.y;
                    }
                    if (smer == "-0")
                    {
                        novX = fig.x - i;
                        novY = fig.y;
                    }
                    if (smer == "0+")
                    {
                        novX = fig.x;
                        novY = fig.y + i;
                    }
                    if (smer == "0-")
                    {
                        novX = fig.x;
                        novY = fig.y - i;
                    }

                    //preverimo nove koordinate,če so na šahovnici
                    if (novX >= 0 && novX < 8 && novY >= 0 && novY < 8)
                    {
                        //tvorimo tabelo iz novih koordinat
                        int[] potLov = new int[2];
                        potLov[0] = novX; potLov[1] = novY;

                        //če je novo polje prazno,je premik možen in nadaljujemo v tej smeri
                        if (this.sahovnica[novX, novY] == ".")
                        {
                            vsePot.Add(potLov);
                        }

                        //če je na polju nasprotnikova figura je premik možen,nadaljne poteze v tej smeri niso možne
                        if ((this.sahovnica[novX, novY] != ".") && ("" + sahovnica[novX, novY][0] != fig.barvaFigure()))
                        {
                            vsePot.Add(potLov);
                            break;
                        }

                        //če je na polju lastna figura,premik ni možen in prenehamo s premikanjem v tej smeri
                        if ("" + this.sahovnica[novX, novY][0] == fig.barvaFigure())
                        {
                            break;
                        }
                    }
                }
            }
            return vsePot;
        }
Esempio n. 3
0
        /// <summary>
        /// metoda,ki za kmeta izračuna vsa njegova delovanja(brez EP)
        /// </summary>
        /// <param name="fig">Object: objekt Figura,ki predstavlja kmeta</param>
        /// <returns>list: seznam vseh potez kmeta</returns>
        public List<int[]> Kmet(Figura fig)
        {
            List<int[]> vsePot = new List<int[]>();

            //definiramo jemanja
            int[] J1 = new int[2];
            int[] J2 = new int[2];

            //...beli
            if (fig.barvaFigure() == "b")
            {
                //dva mozna premika
                int[] T1 = new int[2]; T1[0] = fig.x + 1; T1[1] = fig.y;
                int[] T2 = new int[2]; T2[0] = fig.x + 2; T2[1] = fig.y;

                //dve jemanji
                J1[0] = fig.x + 1; J1[1] = fig.y + 1;
                J2[0] = fig.x + 1; J2[1] = fig.y - 1;

                //ce je pred njim prazno polje ga dodamo...
                if (this.sahovnica[T1[0], T1[1]][0] == '.')
                {
                    vsePot.Add(T1);

                    //...ce obe polji pred njim prazni in je na zacetku dodamo se drug premik
                    if (fig.x < 6 && this.sahovnica[T2[0], T2[1]][0] == '.' && fig.x == 1)
                    {
                        vsePot.Add(T2);
                    }
                }
            }

            //...crni
            if (fig.barvaFigure() == "c")
            {
                //dva mozna premika
                int[] T1 = new int[2]; T1[0] = fig.x - 1; T1[1] = fig.y;
                int[] T2 = new int[2]; T2[0] = fig.x - 2; T2[1] = fig.y;

                //dve jemanji
                J1[0] = fig.x - 1; J1[1] = fig.y + 1;
                J2[0] = fig.x - 1; J2[1] = fig.y - 1;

                //ce je pred njim prazno polje ga dodamo...
                if (this.sahovnica[T1[0], T1[1]][0] == '.')
                {
                    vsePot.Add(T1);

                    //...ce obe polji pred njim prazni in je na zacetku dodamo se drug premik
                    if ((fig.x > 1 && this.sahovnica[T2[0], T2[1]][0] == '.') && (fig.x == 6))
                    {
                        vsePot.Add(T2);
                    }
                }
            }

            //preverimo še jemanja...
            int[][] vsaJem = new int[2][]; vsaJem[0] = J1; vsaJem[1] = J2;

            foreach (int[] jem in vsaJem)
            {
                //...ce so znotraj sahovnice
                if ((jem[1] < 8) && (jem[1] >= 0))
                {
                    //...in polje ni prazno ali zasedeno z lastno figuro...dodamo
                    if ((this.sahovnica[jem[0], jem[1]][0] != '.') && ("" + this.sahovnica[jem[0], jem[1]][0] != fig.barvaFigure()))
                    {
                        vsePot.Add(jem);
                    }
                }
            }
            return vsePot;
        }