예제 #1
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.");
            }
        }
예제 #2
0
 //Ulozi vstupni Policko do listu ke smazani
 private void PridatKeSmazani(Policko p)
 {
     OznacKeSmazani(p);
     p.skoceno = true;
     LPSmaz.Add(p);
 }
예제 #3
0
        //Incializace a vytvoreni sachovnice i s figurkama
        private void VytvorSachovnici(float x, float y, float z)
        {
            //Inicializace sachovnice
            Pole = new Policko[8, 8];

            //Vytvoreni jednotlivych policek a jejich nastaveni
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    Pole[i, j] = new Policko(i, j);
                    Pole[i, j].mesh = new TVMesh();
                    Pole[i, j].mesh = Scene.CreateMeshBuilder();
                    Pole[i, j].mesh.CreateBox(5, 2, 5, true);
                    Pole[i, j].mesh.SetPosition((float)5 * i + x, y, (float)5 * j + z);
                    Pole[i, j].mesh.SetMeshName(i.ToString() + "P" + j.ToString());
                    if ((((j % 2) == 0) && ((i % 2) == 1)) || (((j % 2) == 1) && ((i % 2) == 0)))
                    {
                        Pole[i, j].barva = "bila";
                        Pole[i, j].hodnota = 10;
                        Pole[i, j].mesh.SetTexture(Globals.GetTex("bila"), -1);
                    }
                    else
                    {
                        Pole[i, j].barva = "seda";
                        Pole[i, j].mesh.SetTexture(Globals.GetTex("seda"), -1);
                    }
                }
            }
        }
예제 #4
0
 private void OznacTahnutelne(Policko p)
 {
     p.oznaceno = true;
     p.mesh.SetTexture(Globals.GetTex("sedaoznaceni"), -1);
 }
예제 #5
0
        /*Přesune figurku z bodu A do bodu B
        Jestli mezi A a B je figurka protivnika, prida se ke smazani*/
        private void Presun(ref Policko a, Policko b)
        {
            //Nastaveni i podle smeru posuvu
            int x = b.x - a.x, y = b.y - a.y, i = 10;
            if (x > 0 && y > 0) i = 0;
            if (x > 0 && y < 0) i = 1;
            if (x < 0 && y < 0) i = 2;
            if (x < 0 && y > 0) i = 3;

            Policko pom;
            pom = GetPolicko(a.x, a.y);
            x = a.x; y = a.y;

            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.x != b.x && pom.y != b.y)
            {
                if (pom.hodnota != 0)
                {
                    PridatKeSmazani(pom);
                    break;
                }
                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);
            }

            //Prenastaveni hodnot -> presun
            b.hodnota = a.hodnota;
            b.fig = a.fig;
            b.fig.mesh.SetPosition((float)5 * b.x + xc, 1.0f + yc, (float)5 * b.y + zc);
            b.fig.x = b.x;
            b.fig.y = b.y;
            b.fig.mesh.SetMeshName(b.x.ToString() + "F" + b.y.ToString());

            a.hodnota = 0;
            a.fig = null;

            a.mesh.SetTexture(Globals.GetTex("seda"), -1);
            NecoOznaceno = false;
            a.oznaceno = false;
            a = null;
        }
예제 #6
0
        private void OznacPolicko(Policko pom)
        {
            //Odoznaci kliknute policko
            if (pom != null && pom.oznaceno && pom.barva == "seda")
            {
                pom.mesh.SetTexture(Globals.GetTex("seda"), -1);
                NecoOznaceno = false;
                pom.oznaceno = false;
                lastPoleOZN = null;

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

                        OdOznacTahnutelne(item);
                    }
                    LPOznac.Clear();
                }
            }
            //Oznaci kliknute policko
            else if (!pom.oznaceno && lastPoleOZN == null && pom.barva == "seda")
            {
                pom.oznaceno = true;
                pom.mesh.SetTexture(Globals.GetTex("sedaoznp"), -1);
                NecoOznaceno = true;
                lastPoleOZN = pom;
            }
        }
예제 #7
0
 private void OznacSmazane(Policko p)
 {
     p.mesh.SetTexture(Globals.GetTex("SedaSmazane"), -1);
 }
예제 #8
0
        //Oznacovani a odoznacovani policek ze vstupu
        private void OznacNajete(Policko pom)
        {
            //Pokud je nejake policko uz oznacene najetim, tak ho odoznaci
            if (lastNajete != null && lastNajete != lastPoleOZN && lastNajete.barva == "seda")
            {
                if (lastNajete.oznaceno)
                    lastNajete.mesh.SetTexture(Globals.GetTex("sedaoznaceni"), -1);
                else
                    lastNajete.mesh.SetTexture(Globals.GetTex("seda"), -1);

                if (lastSmazane != null && lastSmazane == lastNajete)
                    lastNajete.mesh.SetTexture(Globals.GetTex("SedaSmazane"), -1);

                lastNajete.najeto = false;
                lastNajete = null;
            }

            //Pokud neni nic najeto, oznaci najete
            if (pom != null && lastPoleOZN != pom && pom.barva == "seda")
            {
                if (lastPoleOZN != null && pom.hodnota == 0)
                {
                    pom.najeto = true;
                    pom.mesh.SetTexture(Globals.GetTex("sedaozn"), -1);
                    lastNajete = pom;
                }
                else if (lastPoleOZN == null)
                {
                    pom.najeto = true;
                    pom.mesh.SetTexture(Globals.GetTex("sedaozn"), -1);
                    lastNajete = pom;
                }
            }
        }
예제 #9
0
 private void OznacKeSmazani(Policko p)
 {
     if (p.hodnota == 1 || p.hodnota == 3)
         p.fig.mesh.SetTexture(Globals.GetTex("bdelet"), -1);
     else if (p.hodnota == 2 || p.hodnota == 4)
         p.fig.mesh.SetTexture(Globals.GetTex("cdelet"), -1);
 }
예제 #10
0
        //Pocatecni nastaveni vsech potrebnych promennych
        private void NastavPromenne()
        {
            //Zvuky
            sTah = new SoundPlayer("Zvuky\\tah.wav");
            sTah.Load();
            sChyba = new SoundPlayer("Zvuky\\Chyba.wav");
            sChyba.Load();
            sKonec = new SoundPlayer("Zvuky\\Konec.wav");
            sKonec.Load();
            sVarovani = new SoundPlayer("Zvuky\\Varovani.wav");
            sVarovani.Load();
            sVitezBily = new SoundPlayer("Zvuky\\VitezBily.wav");
            sVitezBily.Load();
            sVitezCerny = new SoundPlayer("Zvuky\\VitezCerny.wav");
            sVitezCerny.Load();

            //Naplneni pomocnych promennych pro oznaceni
            lastNajete = null;
            lastPoleOZN = null;
            NecoOznaceno = false;
            LzeOdoznacit = true;

            LFB = null;
            LFC = null;

            //Naplneni promennych tahu
            TAH = true;
            Tahnuto = false;
            VTahu = false;
            PoTahu = false;
            Vitez = 0;

            //Inicializace listu pro predvypocitani tahu/skoku/smazani
            LPTah = new List<Policko>();
            LPSkok = new List<Policko>();
            LPSmaz = new List<Policko>();
            LPOznac = new List<Policko>();

            //Nastaveni timeru pro otaceni
            timer2.Enabled = false;
            timer3.Enabled = false;

            LastRadius = Polomer;

            //Inicializace listu figurek
            LFB = new List<Figurka>();
            LFC = new List<Figurka>();
            Pause = true;
            Konec = false;

            label2.Text = "BÍLÝ";
        }
예제 #11
0
        //Naplnění listu LPTah všemi možnými možnosti táhnutí pro dané Policko
        private void Naplneni_LPTah(Policko p)
        {
            if (LPTah.Count != 0) LPTah.Clear();
            int Hod = p.hodnota;
            int x = p.x, y = p.y, lHod = 10, pHod = 10, llHod = 10, ppHod = 10;
            switch (Hod)
            {
                case 1:     // Bila obicejna figurka

                    if (y <= 6)    //Horni okraj o jedno policko
                    {
                        if (x >= 1)    //Levy okraj o jedno policko
                        {
                            lHod = Pole[x - 1, y + 1].hodnota;
                            if (lHod == 0) LPTah.Add(Pole[x - 1, y + 1]);
                        }
                        if (x <= 6)    //Pravy okraj o jedno policko
                        {
                            pHod = Pole[x + 1, y + 1].hodnota;
                            if (pHod == 0) LPTah.Add(Pole[x + 1, y + 1]);
                        }
                        if (y <= 5)  //Horni okraj o dve policka
                        {
                            if (x >= 2)    //Levy oraj o dve policka
                            {
                                llHod = Pole[x - 2, y + 2].hodnota;
                                if ((lHod == 2 || lHod == 4) && llHod == 0) LPTah.Add(Pole[x - 2, y + 2]);
                            }
                            if (x <= 5)    //Pravy okraj o dve policka
                            {
                                ppHod = Pole[x + 2, y + 2].hodnota;
                                if ((pHod == 2 || pHod == 4) && ppHod == 0) LPTah.Add(Pole[x + 2, y + 2]);
                            }
                        }
                    }
                    break;
                case 2:     // Cerna obicejna figurka
                    if (y >= 1)    //Dolni okraj o jedno policko
                    {
                        if (x >= 1)    //Levy okraj o jedno policko
                        {
                            lHod = Pole[x - 1, y - 1].hodnota;
                            if (lHod == 0) LPTah.Add(Pole[x - 1, y - 1]);
                        }
                        if (x <= 6)    //Pravy okraj o jedno policko
                        {
                            pHod = Pole[x + 1, y - 1].hodnota;
                            if (pHod == 0) LPTah.Add(Pole[x + 1, y - 1]);
                        }
                        if (y >= 2)  //Dolni okraj o dve policka
                        {
                            if (x >= 2)    //Levy oraj o dve policka
                            {
                                llHod = Pole[x - 2, y - 2].hodnota;
                                if ((lHod == 1 || lHod == 3) && llHod == 0) LPTah.Add(Pole[x - 2, y - 2]);
                            }
                            if (x <= 5)    //Pravy okraj o dve policka
                            {
                                ppHod = Pole[x + 2, y - 2].hodnota;
                                if ((pHod == 1 || pHod == 3) && ppHod == 0) LPTah.Add(Pole[x + 2, y - 2]);
                            }
                        }
                    }
                    break;
                //TODO: figurky DAM
                case 3: // Bila dama
                    Policko pom;
                    Policko LastPom;
                    for (int i = 0; i < 4; i++)
                    {
                        pom = GetPolicko(p.x, p.y);
                        x = p.x; y = p.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)
                        {
                            if (pom.hodnota == 1 || pom.hodnota == 3) break;
                            if ((pom.hodnota == 2 || pom.hodnota == 4) && LastPom != null) break;
                            if (pom.hodnota == 0 && LastPom == null) LPTah.Add(pom);
                            if (pom.hodnota == 0 && LastPom != null)
                                if (!LastPom.skoceno) LPTah.Add(pom);
                            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(p.x, p.y);
                        x = p.x; y = p.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)
                        {
                            if (pom.hodnota == 2 || pom.hodnota == 4) break;
                            if ((pom.hodnota == 1 || pom.hodnota == 3) && LastPom != null) break;
                            if (pom.hodnota == 0 && LastPom == null) LPTah.Add(pom);
                            if (pom.hodnota == 0 && LastPom != null)
                                if (!LastPom.skoceno) LPTah.Add(pom);
                            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;
                default:
                    MessageBox.Show("Error pri naplneni LPT policka bez figurky!!");
                    break;
            }
        }
예제 #12
0
        //Naplnění listu LPSkok Policky takovymi na ktere muzem z daneho Policka skakat
        private void Naplneni_LPSkok(Policko pp)
        {
            if (LPSkok.Count != 0) LPSkok.Clear();
            int Hod = pp.hodnota;
            int x = pp.x, y = pp.y, lHod = 10, pHod = 10, llHod = 10, ppHod = 10;
            switch (Hod)
            {
                case 1: // Bila normalni figurka
                    if (y <= 5)  //Horni okraj o dve policka
                    {
                        if (x >= 2)    //Levy oraj o dve policka
                        {
                            lHod = Pole[x - 1, y + 1].hodnota;
                            llHod = Pole[x - 2, y + 2].hodnota;
                            if ((lHod == 2 || lHod == 4) && llHod == 0) LPSkok.Add(Pole[x - 2, y + 2]);
                        }
                        if (x <= 5)    //Pravy okraj o dve policka
                        {
                            pHod = Pole[x + 1, y + 1].hodnota;
                            ppHod = Pole[x + 2, y + 2].hodnota;
                            if ((pHod == 2 || pHod == 4) && ppHod == 0) LPSkok.Add(Pole[x + 2, y + 2]);
                        }
                    }
                    break;
                case 2: // Cerna normalni figurka
                    if (y >= 2)    //Dolni okraj o dve policka
                    {
                        if (x >= 2)    //Levy oraj o dve policka
                        {
                            lHod = Pole[x - 1, y - 1].hodnota;
                            llHod = Pole[x - 2, y - 2].hodnota;
                            if ((lHod == 1 || lHod == 3) && llHod == 0) LPSkok.Add(Pole[x - 2, y - 2]);
                        }
                        if (x <= 5)    //Pravy okraj o dve policka
                        {
                            pHod = Pole[x + 1, y - 1].hodnota;
                            ppHod = Pole[x + 2, y - 2].hodnota;
                            if ((pHod == 1 || pHod == 3) && ppHod == 0) LPSkok.Add(Pole[x + 2, y - 2]);
                        }
                    }
                    break;
                //TODO: Lze skocit s damou?
                case 3: // Bila dama
                    Policko pom;
                    Policko LastPom;
                    for (int i = 0; i < 4; i++)
                    {
                        pom = GetPolicko(pp.x, pp.y);
                        x = pp.x; y = pp.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) LPSkok.Add(pom);
                            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(pp.x, pp.y);
                        x = pp.x; y = pp.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) LPSkok.Add(pom);
                            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;
            }
        }