예제 #1
0
        Babu IdeiglenesLeut(int x, int y, bool aktualisjatekos)
        {
            Babu temp = null;

            if (aktualisjatekos)
            {
                foreach (var item in fekete.Babuk)
                {
                    if (item.Xpozicio == x && item.Ypozicio == y)
                    {
                        temp = item;
                    }
                }
                if (temp != null)
                {
                    fekete.Babuk.Remove(temp);
                }
            }
            else
            {
                foreach (var item in feher.Babuk)
                {
                    if (item.Xpozicio == x && item.Ypozicio == y)
                    {
                        temp = item;
                    }
                }
                if (temp != null)
                {
                    feher.Babuk.Remove(temp);
                }
            }
            return(temp);
        }
예제 #2
0
        private bool SakkMattCheck(bool aktualisjatekos)
        {
            Babu temp     = null;
            bool sakkmatt = false;
            bool sakk     = false;

            if (aktualisjatekos)
            {
                temp = feher.GetKiraly();
                sakk = feher.sakk;
            }
            else
            {
                temp = fekete.GetKiraly();
                sakk = fekete.sakk;
            }
            if (sakk)
            {
                List <Point> kiralyLehetsegesLepesek = temp.LehetsegesLepesek(table.Table);
                foreach (var item in kiralyLehetsegesLepesek)
                {
                    if (!SakkbaLep((int)item.X, (int)item.Y, temp, aktualisjatekos))
                    {
                        return(false);
                    }
                }
                if (aktualisjatekos)
                {
                    foreach (var item in feher.Babuk)
                    {
                        List <Point> babuLepesei = item.LehetsegesLepesek(table.Table);
                        foreach (var lepes in babuLepesei)
                        {
                            if (!SakkbaLep((int)lepes.X, (int)lepes.Y, item, aktualisjatekos))
                            {
                                return(false);
                            }
                        }
                    }
                }
                else
                {
                    foreach (var item in fekete.Babuk)
                    {
                        List <Point> babuLepesei = item.LehetsegesLepesek(table.Table);
                        foreach (var lepes in babuLepesei)
                        {
                            if (!SakkbaLep((int)lepes.X, (int)lepes.Y, item, aktualisjatekos))
                            {
                                return(false);
                            }
                        }
                    }
                }
                sakkmatt = true;
            }
            return(sakkmatt);
        }
예제 #3
0
        Point IdeigLenesenMozgat(Babu babu, Point to, int [,] tabla)
        {
            Point honnan = new Point(babu.Xpozicio, babu.Ypozicio);

            tabla[babu.Xpozicio, babu.Ypozicio] = 0;
            babu.Xpozicio = (int)to.X;
            babu.Ypozicio = (int)to.Y;
            tabla[babu.Xpozicio, babu.Ypozicio] = (int)babu.tipus * (int)babu.Szin;
            return(honnan);
        }
예제 #4
0
        public bool SakkTesz(Babu kiraly, int[,] palya)
        {
            bool sakk = false;

            foreach (var item in Babuk)
            {
                if (item.LehetsegesLepes(kiraly.Xpozicio, kiraly.Ypozicio, palya))
                {
                    sakk = true;
                }
            }

            return(sakk);
        }
예제 #5
0
        bool SakkbaLep(int x, int y, Babu babu, bool aktualisjatekos)
        {
            bool megmindigSakk = true;
            int  tempx         = babu.Xpozicio;
            int  tempy         = babu.Ypozicio;

            babu.Xpozicio      = x;
            babu.Ypozicio      = y;
            int[,] temp        = Util.CreateTemp(Table.Table);
            temp[tempx, tempy] = 0;
            temp[x, y]         = (int)babu.tipus * (int)babu.Szin;
            Babu ideiglenesenLeutott = IdeiglenesLeut(x, y, aktualisjatekos);

            if (aktualisjatekos)
            {
                if (fekete.SakkTesz(feher.GetKiraly(), temp))
                {
                    megmindigSakk = true;
                }
                else
                {
                    megmindigSakk = false;
                }
                if (ideiglenesenLeutott != null)
                {
                    fekete.Babuk.Add(ideiglenesenLeutott);
                }
            }
            else
            {
                if (feher.SakkTesz(fekete.GetKiraly(), temp))
                {
                    megmindigSakk = true;
                }
                else
                {
                    megmindigSakk = false;
                }
                if (ideiglenesenLeutott != null)
                {
                    feher.Babuk.Add(ideiglenesenLeutott);
                }
            }
            babu.Xpozicio = tempx;
            babu.Ypozicio = tempy;

            return(megmindigSakk);
        }
예제 #6
0
 int  Kereses(int szint, int[,] tabla, bool ai)
 {
     if (szint == 0)
     {
         return(tablaKiertekel(tabla));
     }
     if (ai)
     {
         int legjobbErtek = 9999;
         foreach (var item in this.Babuk)
         {
             foreach (var lepes in item.LehetsegesLepesek(tabla))
             {
                 Babu  temp   = IdeiglenesLeut((int)lepes.X, (int)lepes.Y, ellenfel);
                 Point honnan = IdeigLenesenMozgat(item, lepes, tabla);
                 int   ertek  = Kereses(szint - 1, tabla, !ai);
                 ertek += szint;
                 if (legjobbErtek > ertek)
                 {
                     legjobbErtek = ertek;
                     vegsolepes   = lepes;
                     vegsoLepo    = item;
                 }
                 visszaAllit(item, temp, honnan, tabla, ellenfel);
             }
         }
         return(legjobbErtek);
     }
     else
     {
         int legjobbErtek = -9999;
         foreach (var item in ellenfel.Babuk)
         {
             foreach (var lepes in item.LehetsegesLepesek(tabla))
             {
                 Babu  temp   = IdeiglenesLeut((int)lepes.X, (int)lepes.Y, this);
                 Point honnan = IdeigLenesenMozgat(item, lepes, tabla);
                 int   ertek  = Kereses(szint - 1, tabla, !ai);
                 if (legjobbErtek < ertek)
                 {
                     legjobbErtek = ertek;
                 }
                 visszaAllit(item, temp, honnan, tabla, this);
             }
         }
         return(legjobbErtek);
     }
 }
예제 #7
0
        Babu IdeiglenesLeut(int x, int y, Jatekos feher)
        {
            Babu temp = null;

            foreach (var item in feher.Babuk)
            {
                if (item.Xpozicio == x && item.Ypozicio == y)
                {
                    temp = item;
                }
            }
            if (temp != null)
            {
                temp.aktiv = false;
            }

            return(temp);
        }
예제 #8
0
        void visszaAllit(Babu visszamozgat, Babu leutott, Point hova, int[,] tabla, Jatekos jatekos)
        {
            int tempx = visszamozgat.Xpozicio;
            int tempy = visszamozgat.Ypozicio;

            visszamozgat.Xpozicio           = (int)hova.X;
            visszamozgat.Ypozicio           = (int)hova.Y;
            tabla[(int)hova.X, (int)hova.Y] = (int)visszamozgat.tipus * (int)visszamozgat.Szin;
            if (leutott != null)
            {
                leutott.aktiv       = true;
                tabla[tempx, tempy] = (int)leutott.tipus * (int)leutott.Szin;
            }
            else
            {
                tabla[tempx, tempy] = 0;
            }
        }