Example #1
0
        public Vysledek_hry Pridani_tahu(int x, int y, Stav_pole hrac)
        {
            Vysledek_hry vysledek = Vysledek_hry.Pokracovat;

            foreach (Smer_hry smer in Enum.GetValues(typeof(Smer_hry)))
            {
                for (int i = 0; i < souvisla_delka_figurek_pro_vyhru; i++)
                {
                    int smer_horizontalni = znamenka_smeru[(int)smer, (int)Souradnice.X];
                    int smer_vertikalni   = znamenka_smeru[(int)smer, (int)Souradnice.Y];
                    int poziceX           = x + i * smer_horizontalni;
                    int poziceY           = y + i * smer_vertikalni;
                    if (((smer_horizontalni == -1 && poziceX >= 0 && poziceX <= velikost_hraci_plochy - souvisla_delka_figurek_pro_vyhru) || (smer_horizontalni == 1 && poziceX >= souvisla_delka_figurek_pro_vyhru - 1 && poziceX < velikost_hraci_plochy) || (smer_horizontalni == 0)) &&
                        ((smer_vertikalni == -1 && poziceY >= 0 && poziceY <= velikost_hraci_plochy - souvisla_delka_figurek_pro_vyhru) || (smer_vertikalni == 1 && poziceY >= souvisla_delka_figurek_pro_vyhru - 1 && poziceY < velikost_hraci_plochy) || (smer_vertikalni == 0)))
                    {
                        vysledek = Zapocitej_tah(ref Figurky_v_rade[poziceX, poziceY, (int)smer, (int)hrac]);
                        if (vysledek != Vysledek_hry.Pokracovat)
                        {
                            break;
                        }
                    }
                }
                if (vysledek != Vysledek_hry.Pokracovat)
                {
                    break;
                }
            }
            Rozlozeni_figurek[x, y] = hrac;
            if (vysledek == Vysledek_hry.Pokracovat && celkovy_pocet_moznych_rad <= 0)
            {
                vysledek = Vysledek_hry.Remiza;
            }
            return(vysledek);
        }
Example #2
0
        private void Hraci_plocha_MouseClick(object sender, MouseEventArgs e)
        {
            int x = (e.X) / velikost_policka;
            int y = (e.Y) / velikost_policka;

            if (aktivni_hra == false)
            {
                return;
            }

            if (!(Muj_vypocet.klik_na_hraci_plochu(x, y)))
            {
                return;
            }
            if (Muj_vypocet.Rozlozeni_figurek[x, y] != Stav_pole.Volne)
            {
                return;
            }
            Vysledek_hry vysledek = Muj_vypocet.Pridani_tahu(x, y, aktualni_hrac);

            Refresh();
            if (vysledek == Vysledek_hry.Vyhra)
            {
                aktivni_hra = false;
                MessageBox.Show("Vyhral " + aktualni_hrac);
            }
            else if (vysledek == Vysledek_hry.Remiza)
            {
                aktivni_hra = false;
                MessageBox.Show("Remiza");
            }
            aktualni_hrac = Protivnik;
        }
Example #3
0
 private void Vykresleni_figurky(Graphics g, Stav_pole figurka, int x, int y)
 {
     if (!(Muj_vypocet.klik_na_hraci_plochu(x, y)))
     {
         throw new Exception("Souradnice jsou mimo hraci plochu.");
     }
     if (figurka == Stav_pole.Krizek)
     {
         g.DrawLine(Pero_pro_krizek, x * velikost_policka + 1, y * velikost_policka + 1, x * velikost_policka + velikost_policka - 1, y * velikost_policka + velikost_policka - 1);
         g.DrawLine(Pero_pro_krizek, x * velikost_policka + 1, y * velikost_policka + velikost_policka - 1, x * velikost_policka + velikost_policka - 1, y * velikost_policka + 1);
     }
     if (figurka == Stav_pole.Kolecko)
     {
         g.DrawEllipse(Pero_pro_kolecko, x * velikost_policka + 1, y * velikost_policka + 1, velikost_policka - 2, velikost_policka - 2);
     }
 }
Example #4
0
 private void Vycisteni_figurek_v_rade()
 {
     figurky_v_rade = new int [velikost_hraci_plochy, velikost_hraci_plochy, (int)Smer_hry.Severo_vychod + 1, (int)Stav_pole.Kolecko + 1];
     for (int x = 0; x < velikost_hraci_plochy; x++)
     {
         for (int y = 0; y < velikost_hraci_plochy; y++)
         {
             foreach (Smer_hry smer in Enum.GetValues(typeof(Smer_hry)))                        // projde vsechny smery v enumu Smer hry
             {
                 for (Stav_pole stav = Stav_pole.Krizek; stav <= Stav_pole.Kolecko; stav++)
                 {
                     figurky_v_rade [x, y, (int)smer, (int)stav] = 0;
                 }
             }
         }
     }
     celkovy_pocet_moznych_rad = 4 * ((2 * velikost_hraci_plochy - (souvisla_delka_figurek_pro_vyhru - 1)) * (velikost_hraci_plochy - (souvisla_delka_figurek_pro_vyhru - 1)));
 }