public Policko(int x, int y)
 {
     this.x = x;
     this.y = y;
     oznaceno = false;
     najeto = false;
     skoceno = false;
     hodnota = 0;
     fig = null;
 }
示例#2
0
        //Kontrola jestli s danou figurkou muzeme skakat
        private bool Lze_Skocit(Figurka f)
        {
            int Hod = f.hodnota;
            int lHod = 10, pHod = 10, llHod = 10, ppHod = 10;
            bool skoc = true;
            switch (Hod)
            {
                case 1:  // Bila normalni figurka
                    if (f.y <= 5)  //Horni okraj o dve policka
                    {
                        if (f.x >= 2)    //Levy oraj o dve policka
                        {
                            skoc = Pole[f.x - 1, f.y + 1].skoceno;
                            lHod = Pole[f.x - 1, f.y + 1].hodnota;
                            llHod = Pole[f.x - 2, f.y + 2].hodnota;
                            if ((lHod == 2 || lHod == 4) && llHod == 0 && !skoc) return true;
                        }
                        if (f.x <= 5)    //Pravy okraj o dve policka
                        {
                            skoc = Pole[f.x + 1, f.y + 1].skoceno;
                            pHod = Pole[f.x + 1, f.y + 1].hodnota;
                            ppHod = Pole[f.x + 2, f.y + 2].hodnota;
                            if ((pHod == 2 || pHod == 4) && ppHod == 0 && !skoc) return true;
                        }
                    }
                    break;
                case 2: // Cerna normalni figurka
                    if (f.y >= 2)    //Dolni okraj o dve policka
                    {
                        if (f.x >= 2)    //Levy oraj o dve policka
                        {
                            skoc = Pole[f.x - 1, f.y - 1].skoceno;
                            lHod = Pole[f.x - 1, f.y - 1].hodnota;
                            llHod = Pole[f.x - 2, f.y - 2].hodnota;
                            if ((lHod == 1 || lHod == 3) && llHod == 0 && !skoc) return true;
                        }
                        if (f.x <= 5)    //Pravy okraj o dve policka
                        {
                            skoc = Pole[f.x + 1, f.y - 1].skoceno;
                            pHod = Pole[f.x + 1, f.y - 1].hodnota;
                            ppHod = Pole[f.x + 2, f.y - 2].hodnota;
                            if ((pHod == 1 || pHod == 3) && ppHod == 0 && !skoc) return true;
                        }
                    }
                    break;
                case 3: // Bila dama
                    Policko pom;
                    int x, y;
                    Policko LastPom;

                    for (int i = 0; i < 4; i++)
                    {
                        pom = GetPolicko(f.x, f.y);
                        x = f.x; y = f.y;
                        LastPom = null;

                        if (i == 0) { x++; y++; }
                        else if (i == 1) { x++; y--; }
                        else if (i == 2) { x--; y--; }
                        else if (i == 3) { x--; y++; }
                        pom = GetPolicko(x, y);

                        while (pom != null) // Doprava nahoru
                        {
                            if (pom.hodnota == 1 || pom.hodnota == 3) break;
                            if ((pom.hodnota == 2 || pom.hodnota == 4) && LastPom != null) break;
                            if (pom.hodnota == 0 && LastPom != null)
                                if (!LastPom.skoceno) return true;
                            if ((pom.hodnota == 2 || pom.hodnota == 4) && LastPom == null) LastPom = pom;

                            if (i == 0) { x++; y++; }
                            else if (i == 1) { x++; y--; }
                            else if (i == 2) { x--; y--; }
                            else if (i == 3) { x--; y++; }
                            pom = GetPolicko(x, y);
                        }
                    }
                    break;

                case 4: // Cerna dama
                    for (int i = 0; i < 4; i++)
                    {
                        pom = GetPolicko(f.x, f.y);
                        x = f.x; y = f.y;
                        LastPom = null;

                        if (i == 0) { x++; y++; }
                        else if (i == 1) { x++; y--; }
                        else if (i == 2) { x--; y--; }
                        else if (i == 3) { x--; y++; }
                        pom = GetPolicko(x, y);

                        while (pom != null) // Doprava nahoru
                        {
                            if (pom.hodnota == 2 || pom.hodnota == 4) break;
                            if ((pom.hodnota == 1 || pom.hodnota == 3) && LastPom != null) break;
                            if (pom.hodnota == 0 && LastPom != null)
                                if (!LastPom.skoceno) return true;
                            if ((pom.hodnota == 1 || pom.hodnota == 3) && LastPom == null) LastPom = pom;

                            if (i == 0) { x++; y++; }
                            else if (i == 1) { x++; y--; }
                            else if (i == 2) { x--; y--; }
                            else if (i == 3) { x--; y++; }
                            pom = GetPolicko(x, y);
                        }
                    }
                    break;
            }
            return false;
        }
示例#3
0
        //Provedeni zmeny tahu a otoceni kamery
        private void JeTahnuto()
        {
            if (Tahnuto)
            {
                //Prepnuti tahu
                if (TAH) TAH = false;
                else TAH = true;

                if (Zvuky && sVarovani.Tag == null)
                    sTah.Play();

                //Nastaveni ridicich promennych
                PoTahu = true;
                Tahnuto = false;
                VTahu = false;
                SloSkocit = null;
                Smazano = false;
                LzeOdoznacit = true;
                MouseDOWN = true;
                sVarovani.Tag = null;
                MStrip.Enabled = false;

                //Smazani skocenych figurek
                if (LPSmaz.Count != 0)
                    SmazList();

                if (LPOznac.Count != 0)
                {
                    foreach (Policko item in LPOznac)
                    {

                        OdOznacTahnutelne(item);
                    }
                    LPOznac.Clear();
                }
            }
        }
示例#4
0
        //Kontrola jestli zmenit figurku na damu
        private void JeFigurkaNaKonci(Policko p)
        {
            if (p.hodnota == 1 && p.y == 7)
            {
                p.fig.mesh.Destroy();
                LFB.Remove(p.fig);
                Figurka f = new Figurka(p.x, p.y, 3);
                LFB.Add(f);

                f.mesh = new TVMesh();
                f.mesh = Scene.CreateMeshBuilder();
                f.mesh = Cylinder(2, 1, 100, 0, 0, 0, 1, 1);
                f.mesh.SetPosition((float)5 * f.x + xc, yc + 1.5f, (float)5 * f.y + zc);
                f.mesh.SetMeshName(f.x.ToString() + "F" + f.y.ToString());
                f.mesh.SetTexture(Globals.GetTex("bilad"), -1);
                p.hodnota = f.hodnota;
                p.fig = f;
                Upozorneni("Bílý dojel na konec šachovnice, měním figurku na dámu.");
            }
            if (p.hodnota == 2 && p.y == 0)
            {
                p.fig.mesh.Destroy();
                LFC.Remove(p.fig);
                Figurka f = new Figurka(p.x, p.y, 4);
                LFC.Add(f);

                f.mesh = new TVMesh();
                f.mesh = Scene.CreateMeshBuilder();
                f.mesh = Cylinder(2, 1, 100, 0, 0, 0, 1, 1);
                f.mesh.SetPosition((float)5 * f.x + xc, yc + 1.5f, (float)5 * f.y + zc);
                f.mesh.SetMeshName(f.x.ToString() + "F" + f.y.ToString());
                f.mesh.SetTexture(Globals.GetTex("cernad"), -1);
                Pole[f.x, f.y].hodnota = f.hodnota;
                Pole[f.x, f.y].fig = f;
                Upozorneni("Černý dojel na konec šachovnice, měním figurku na dámu.");
            }
        }
示例#5
0
 //Vraci figurku se kterou slo v danou chvili skakat
 private void SloNecoSkocit()
 {
     //V nasledujicich dvou ifech se zjistuje prvni figurka kterou jde skocit a ulozi se do SloSkocit
     if ((lastPoleOZN.hodnota == 1 || lastPoleOZN.hodnota == 3) && TAH)
     {
         foreach (Figurka item2 in LFB)
         {
             if (Lze_Skocit(item2) && !Smazano)
             {
                 SloSkocit = item2;
                 break;
             }
         }
     }
     if ((lastPoleOZN.hodnota == 2 || lastPoleOZN.hodnota == 4) && !TAH)
     {
         foreach (Figurka item2 in LFC)
         {
             if (Lze_Skocit(item2) && !Smazano)
             {
                 SloSkocit = item2;
                 break;
             }
         }
     }
 }