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