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; }
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); }