public void salji(int c, string pozicija, int brojKlika, string prvaFigura, int staraKolona, int staraVrsta, string pozicijaMat) { message = c + "," + pozicija + "," + brojKlika.ToString() + "," + prvaFigura + "," + staraKolona + "," + staraVrsta + "," + pozicijaMat; //var message = Console.ReadLine(); //saljemo if (pozicijaMat == "sahmat") { replyMsg = client.WriteLineAndGetReply(message, TimeSpan.FromSeconds(1)); //dobijena Kraj kr = new Kraj(); kr.Show(); } else if (c != 1) { while (message != null) { replyMsg = client.WriteLineAndGetReply(message, TimeSpan.FromSeconds(1000)); //dobijena if (replyMsg != null) { Console.WriteLine(replyMsg.MessageString); string k = replyMsg.MessageString; string[] niz = k.Split(','); Figura.Instance().zameni(int.Parse(niz[4]), int.Parse(niz[5]), int.Parse(niz[0]), int.Parse(niz[1])); prinljeno = replyMsg.MessageString; if (niz[6] == "sahmat") { Kraj kr = new Kraj(); kr.Show(); } } message = Console.ReadLine(); } } }
public void server1() { //dodaj figuru za menjanje ovde server.Delimiter = 0x13; server.DelimiterDataReceived += (sender, msg) => { // Console.WriteLine(msg.MessageString); string k = msg.MessageString; string[] niz = k.Split(','); primljeno1 = niz[5] + "," + niz[6] + "," + niz[1] + "," + niz[2]; Console.WriteLine(primljeno1); if (primljeno1 == "0,0,0,0") { server.Broadcast(partija); } Sah sahhhh = (Sah)Application.OpenForms["Sah"]; sahhhh.pasvaluec = 1; Figura.Instance().zameni(int.Parse(niz[5]), int.Parse(niz[6]), int.Parse(niz[1]), int.Parse(niz[2])); if (niz[7] == "sahmat") { sahmat = "sahmat"; // Kraj kr = new Kraj(); // kr.Show(); } }; clientsConnected = server.ConnectedClientsCount; //Console.WriteLine("number of connected clients is: " + clientsConnected); //var listeningIps = server.GetListeningIPs(); //Console.WriteLine("number of connected clients is: " + listeningIps); //var listeningV4Ips = server.GetListeningIPs().Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork); //Console.WriteLine("number of connected clients is: " + listeningV4Ips); }
public int pomeri(int kolona, int vrsta, int novaKolona, int novaVrsta, string napadnutaFigura) { if ((napadnutaFigura != null && ((novaKolona == kolona + 1 && novaVrsta == vrsta - 1 && novaVrsta == 1) || (novaKolona == kolona - 1 && novaVrsta == vrsta - 1 && novaVrsta == 1))) || (kolona == novaKolona && vrsta == (novaVrsta + 1) && napadnutaFigura == null && novaVrsta == 1)) { return(3); } else if (napadnutaFigura != null && ((novaKolona == kolona + 1 && novaVrsta == vrsta - 1) || (novaKolona == kolona - 1 && novaVrsta == vrsta - 1))) { return(2); } if (kolona == novaKolona && vrsta == 7 && novaVrsta == 5 && Figura.Instance().vratiFiguru(kolona, 6) == null && napadnutaFigura == null) { return(1); } if (kolona == novaKolona && vrsta == (novaVrsta + 1) && napadnutaFigura == null) { return(1); } else { return(0); } }
public static Figura Instance() { if (instace == null) { instace = new Figura(); } return(instace); }
public static void IzpišiPotezeEneFigure(Figura F, List<int[]> poteze) { string izpis = F.IzpisFigure() + ": "; foreach (int[] poteza in poteze) { izpis += "" + poteza[0] + poteza[1] + " , "; } Console.WriteLine(izpis); }
private void sacuvaj_Click(object sender, EventArgs e) { if (i == 0) { sacuvajText.Visible = true; sacuvajLabel.Text = "Enter name"; sacuvaj.Text = "Ok"; i = 1; } else { baza.dodaj(sacuvajText.Text, Figura.Instance().sss1()); sacuvajText.Visible = true; sacuvajLabel.Text = " "; sacuvaj.Text = "Ok"; i = 1; } }
public int pomeri(int kolona, int vrsta, int novaKolona, int novaVrsta, string napadnutaFigura) { if (napadnutaFigura != null && (novaKolona == kolona || novaVrsta == vrsta)) { if (kolona == novaKolona) //na gore { if (vrsta < novaVrsta) { for (int i = vrsta + 1; i < novaVrsta; i++) { if (Figura.Instance().vratiFiguru(kolona, i) != null) { return(0); } } return(2); } else // na dole { for (int i = vrsta - 1; i > novaVrsta; i--) { if (Figura.Instance().vratiFiguru(kolona, i) != null) { return(0); } } return(2); } } else if (vrsta == novaVrsta) //desno { if (kolona < novaKolona) { for (int i = kolona + 1; i < novaKolona; i++) { if (Figura.Instance().vratiFiguru(i, vrsta) != null) { return(0); } } return(2); } else //levo { for (int i = kolona - 1; i > novaKolona; i--) { if (Figura.Instance().vratiFiguru(i, vrsta) != null) { return(0); } } return(2); } } } else if ((kolona == novaKolona || vrsta == novaVrsta) && napadnutaFigura == null) { if (kolona == novaKolona) //na gore { if (vrsta < novaVrsta) { for (int i = vrsta + 1; i < novaVrsta; i++) { if (Figura.Instance().vratiFiguru(kolona, i) != null) { return(0); } } return(1); } else // na dole { for (int i = vrsta - 1; i >= novaVrsta; i--) { if (Figura.Instance().vratiFiguru(kolona, i) != null) { return(0); } } return(1); } } else if (vrsta == novaVrsta) //desno { if (kolona < novaKolona) { for (int i = kolona + 1; i < novaKolona; i++) { if (Figura.Instance().vratiFiguru(i, vrsta) != null) { return(0); } } return(1); } else //levo { for (int i = kolona - 1; i >= novaKolona; i--) { if (Figura.Instance().vratiFiguru(i, vrsta) != null) { return(0); } } return(1); } } } return(0); }
static void Main(string[] args) { Console.WriteLine("Play game?(0=no)"); string yes = "yes"; yes = Console.ReadLine(); Igrac bijeli = new Igrac(Boja.Bijeli); Igrac crni = new Igrac(Boja.Crni); Ploca ploca = new Ploca(); ploca.IspisiPlocu(); bool gotovo = false; //gotovo = ploca.IgraGotova(); while (!gotovo) { Pozicija poz = new Pozicija(); Console.WriteLine("Potez: " + (Ploca.Potez + 1)); //Figura figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(0).PostaviVertikalno(4)); //figura.PostaviPoziciju(new Pozicija().PostaviHorizontalno(0).PostaviVertikalno(5), ploca); //figura = ploca.VratiFiguru(new Pozicija().PostaviHorizontalno(0).PostaviVertikalno(3)); //figura.PostaviPoziciju(new Pozicija().PostaviHorizontalno(3).PostaviVertikalno(5), ploca); //ploca.IspisiPlocu(); Console.WriteLine("Bijeli na potezu"); bool ok = false; Figura figura = null; string potez = ""; string potezIgraca = ""; while (!ok) { potezIgraca = ""; Console.Write("Odaberite figuru iz polja (npr.A1):"); potez = Console.ReadLine(); poz = ploca.PozicijaZaPolje(potez); potezIgraca += potez; figura = ploca.VratiFiguru(poz); if (figura == null) { continue; } Console.Write("Odigrajte potez (npr. A3):"); potez = Console.ReadLine(); potezIgraca += potez; poz = ploca.PozicijaZaPolje(potez); try { bijeli.OdigrajPotez(figura, poz, ploca); ok = true; ploca.potezi.Add(potezIgraca); } catch (Exception ex) { ok = false; Console.WriteLine(ex.Message); } } ploca.IspisiPlocu(); Console.WriteLine("Crni na potezu"); ok = false; while (!ok) { potezIgraca = ""; Console.Write("Odaberite figuru iz polja (npr.A1):"); potez = Console.ReadLine(); potezIgraca += potez; poz = ploca.PozicijaZaPolje(potez); figura = ploca.VratiFiguru(poz); if (figura != null) { ok = true; } Console.Write("Odigrajte potez (npr. A3):"); potez = Console.ReadLine(); potezIgraca += potez; poz = ploca.PozicijaZaPolje(potez); try { crni.OdigrajPotez(figura, poz, ploca); ok = true; ploca.potezi.Add(potezIgraca); } catch (Exception ex) { Console.WriteLine(ex.Message); ok = false; } } ploca.IspisiPlocu(); Ploca.Potez++; } }
private void Sah_MouseClick(object sender, MouseEventArgs e) { base.OnMouseMove(e); int brojKolone, brojVrste; brojKolone = (e.X) / 60; brojVrste = 8 - e.Y / 60 + 1; //label1.Text= Figura.Instance().vratiFiguru(brojKolone,brojVrste); if (brojKolone < 1 || brojKolone > 8 || brojVrste < 1 || brojVrste > 8) // u slucaju da je kliknuto van table { Console.WriteLine("greska"); } else if (brojKlika == 1) // beli igrac bira figuru koju zeli pomeriti { prvaFigura = Figura.Instance().nazivFigure(brojKolone, brojVrste, Figura.Instance().vratiFiguru(brojKolone, brojVrste)); if (Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB6" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB7" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB5" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB8" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB3" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pB4" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "tB1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "tB2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "koB1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "koB2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "lB1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "lB2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "krB1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "kB1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zKrB" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zKoB" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zTB" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zLB") { brojKlika = 2; } } else if (brojKlika == 2) // beli igrac pomera izabranu figuru { if (c == 2) { odredi1(brojKolone, brojVrste); // odredjivanje dali je moguce pomeriti belu figuru na odabrano polje } } //CRNI JE NA POTEZU else if (brojKlika == 3) { prvaFigura = Figura.Instance().nazivFigure(brojKolone, brojVrste, Figura.Instance().vratiFiguru(brojKolone, brojVrste)); if (Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC6" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC7" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC5" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC8" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC3" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "pC4" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "tC1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "tC2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "koC1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "koC2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "lC1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "lC2" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "krC1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "kC1" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zKrC" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zKoC" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zTC" || Figura.Instance().vratiFiguru(brojKolone, brojVrste) == "zLC") { brojKlika = 4; } } else if (brojKlika == 4) { if (c == 1) { odredi2(brojKolone, brojVrste); brojKlika = 3; c = 2; } } //else if(brojKlika==5) //{ // if(e.X > 310 && e.Y >= 80 && e.Y < 140 && e.X < 460) // { // zamenaBf.Visible = false; // fdisable(); // //brojKlika = 3; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zKrB.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zKrB.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 1); // //Client.Instance().salji(c, 0 +","+1 , brojKlika, prvaFigura, kolonaZamena , vrstaZamena); // brojKlika = 1; // } // else if (e.X > 310 && e.Y >= 140 && e.Y<200 && e.X<460) // { // zamenaBf.Visible = false; // fdisable(); // brojKlika = 3; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zKoB.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zKoB.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 2); // } // else if (e.X > 310 && e.Y >= 200 && e.Y < 260 && e.X < 460) // { // zamenaBf.Visible = false; // fdisable(); // brojKlika = 3; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zTB.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zTB.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 3); // } // else if (e.X > 310 && e.Y >= 260 && e.Y < 320 && e.X < 460) // { // zamenaBf.Visible = false; // fdisable(); // brojKlika = 3; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zLB.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zLB.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 4); // } //} //else if(brojKlika==6) //{ // if (e.X > 310 && e.Y >= 280 && e.Y < 340 && e.X < 460) // { // zamenaCf.Visible = false; // fdisable(); // brojKlika = 1; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zKrC.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zKrC.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 5); // } // else if (e.X > 310 && e.Y >= 340 && e.Y < 400 && e.X < 460) // { // zamenaCf.Visible = false; // fdisable(); // brojKlika = 1; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zKoC.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zKoC.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 6); // } // else if (e.X > 310 && e.Y >= 400 && e.Y < 460 && e.X < 460) // { // zamenaCf.Visible = false; // fdisable(); // brojKlika = 1; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zTC.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zTC.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 7); // } // else if (e.X > 310 && e.Y >= 460 && e.Y < 520 && e.X < 460) // { // zamenaCf.Visible = false; // fdisable(); // brojKlika = 1; // string kz = Figura.Instance().vratiFiguru(kolonaZamena, vrstaZamena); // zLC.Location = new Point(Figura.Instance().kolonaZaFiguru(kz), Figura.Instance().vrstaZaFiguru(kz)); // zLC.Visible = true; // Figura.Instance().izvrsiZamenu(kolonaZamena, vrstaZamena, 0, 8); // } //} }
public void odredi2(int brojKolone, int brojVrste) { if (Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC3" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC4" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC5" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC6" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC7" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pC8" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "tC1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "tC2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "koC1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "koC2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "lC1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "lC2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "krC1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "kC1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "izmeniPiona" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zKrC" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zKoC" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zTC" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zLC") { if (Figura.Instance().napadnutCrniKralj(brojKolone, brojVrste) == 1) { //if (Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "izmeniPiona") //{ // label1.Text = "izvrsi zamenu"; // ((PictureBox)this.Controls[Figura.Instance().vratiFiguru(Figura.Instance().staraKolona(), Figura.Instance().staraVrsta())]).Location = new Point(brojKolone * 60, (9 - brojVrste) * 60); // Figura.Instance().zameni(Figura.Instance().staraKolona(), Figura.Instance().staraVrsta(), brojKolone, brojVrste); // zamenaCf.Visible = true; // kolonaZamena = brojKolone; // vrstaZamena = brojVrste; // brojKlika = 6; //} //else //{ ((PictureBox)this.Controls[Figura.Instance().odrediFiguru(brojKolone, brojVrste)]).Location = new Point(brojKolone * 60, (9 - brojVrste) * 60); Figura.Instance().zameni(Figura.Instance().staraKolona(), Figura.Instance().staraVrsta(), brojKolone, brojVrste); if (Figura.Instance().mat(brojKolone, brojVrste) == 0) { label1.Text = "sahmat"; pozicijamat = "sahmat"; Kraj k = new Kraj(); k.Show(); } Server.Instance().salji(brojKolone + "," + brojVrste, brojKlika, prvaFigura, Figura.Instance().staraKolona(), Figura.Instance().staraVrsta(), c, pozicijamat); baza.dodajAutomatski(Figura.Instance().sss1()); brojKlika = 3; //} } else { brojKlika = 3; } } // NAPADANJE FIGURA else if (prvaFigura != null && (prvaFigura == "pC1" || prvaFigura == "pC2" || prvaFigura == "pC3" || prvaFigura == "pC4" || prvaFigura == "pC4" || prvaFigura == "pC5" || prvaFigura == "pC6" || prvaFigura == "pC7" || prvaFigura == "pC8" || prvaFigura == "tC1" || prvaFigura == "tC2" || prvaFigura == "koC1" || prvaFigura == "koC2" || prvaFigura == "lC1" || prvaFigura == "lC2" || prvaFigura == "krC1" || prvaFigura == "kC1" || prvaFigura == "zKrC" || prvaFigura == "zKoC" || prvaFigura == "zTC" || prvaFigura == "zLC")) { if (Figura.Instance().odrediFiguru(brojKolone, brojVrste) != null && (Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB6" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB3" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB7" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB4" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB8" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "pB5" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "tB1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "tB2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "koB1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "koB2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "lB1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "lB2" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "krB1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "kB1" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zKrB" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zKoB" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zTB" || Figura.Instance().odrediFiguru(brojKolone, brojVrste) == "zLB")) { try { if (Figura.Instance().napadnutCrniKralj(brojKolone, brojVrste) == 1) { ((PictureBox)this.Controls[prvaFigura]).Location = ((PictureBox)this.Controls[Figura.Instance().odrediFiguru(brojKolone, brojVrste)]).Location; ((PictureBox)this.Controls[Figura.Instance().odrediFiguru(brojKolone, brojVrste)]).Visible = false; Figura.Instance().zameni(Figura.Instance().staraKolona(), Figura.Instance().staraVrsta(), brojKolone, brojVrste); if (Figura.Instance().mat(brojKolone, brojVrste) == 0) { label1.Text = "sahmat"; pozicijamat = "sahmat"; Kraj k = new Kraj(); k.Show(); } Server.Instance().salji(brojKolone + "," + brojVrste, brojKlika, prvaFigura, Figura.Instance().staraKolona(), Figura.Instance().staraVrsta(), c, pozicijamat); baza.dodajAutomatski(Figura.Instance().sss1()); brojKlika = 1; } else { brojKlika = 1; } } catch { } } else { brojKlika = 3; } } }
private void Sah_Paint(object sender, PaintEventArgs e) { Graphics o = CreateGraphics(); // Brush black = new SolidBrush(Color.Black); //Brush yellow = new SolidBrush(Color.Yellow); Brush green = new SolidBrush(Color.Green); // Pen red1 = new Pen(Color.Red); o.FillRectangle(green, t.sirinaX() / 3 * 2, t.visinaY(), t.sirinaX() / 3, t.visinaY() * 8); o.FillRectangle(green, t.sirinaX() / 3 * 2, t.visinaY() * 9, t.sirinaX() * 8 + t.sirinaX() / 3, t.sirinaX() / 3); //int k = 0; //for (int i = 1; i <= 8; i++) //{ // for (int j = 1; j <= 8; j++) // { // k++; // if (k % 2 == 0 && i % 2 == 0) // o.FillRectangle(yellow, i * t.sirinaX(), j * t.visinaY(), t.sirinaX(), t.visinaY()); // else if (k % 2 != 0 && i % 2 == 0) // o.FillRectangle(black, i * t.sirinaX(), j * t.visinaY(), t.sirinaX(), t.visinaY()); // else if (k % 2 == 0 && i % 2 != 0) // o.FillRectangle(black, i * t.sirinaX(), j * t.visinaY(), t.sirinaX(), t.visinaY()); // else if (k % 2 != 0 && i % 2 != 0) // o.FillRectangle(yellow, i * t.sirinaX(), j * t.visinaY(), t.sirinaX(), t.visinaY()); // } //} pB1.Location = new Point(Figura.Instance().kolonaZaFiguru("pB1"), Figura.Instance().vrstaZaFiguru("pB1")); pB2.Location = new Point(Figura.Instance().kolonaZaFiguru("pB2"), Figura.Instance().vrstaZaFiguru("pB2")); pB3.Location = new Point(Figura.Instance().kolonaZaFiguru("pB3"), Figura.Instance().vrstaZaFiguru("pB3")); pB4.Location = new Point(Figura.Instance().kolonaZaFiguru("pB4"), Figura.Instance().vrstaZaFiguru("pB4")); pB5.Location = new Point(Figura.Instance().kolonaZaFiguru("pB5"), Figura.Instance().vrstaZaFiguru("pB5")); pB6.Location = new Point(Figura.Instance().kolonaZaFiguru("pB6"), Figura.Instance().vrstaZaFiguru("pB6")); pB7.Location = new Point(Figura.Instance().kolonaZaFiguru("pB7"), Figura.Instance().vrstaZaFiguru("pB7")); pB8.Location = new Point(Figura.Instance().kolonaZaFiguru("pB8"), Figura.Instance().vrstaZaFiguru("pB8")); tB1.Location = new Point(Figura.Instance().kolonaZaFiguru("tB1"), Figura.Instance().vrstaZaFiguru("tB1")); tB2.Location = new Point(Figura.Instance().kolonaZaFiguru("tB2"), Figura.Instance().vrstaZaFiguru("tB2")); koB1.Location = new Point(Figura.Instance().kolonaZaFiguru("koB1"), Figura.Instance().vrstaZaFiguru("koB1")); koB2.Location = new Point(Figura.Instance().kolonaZaFiguru("koB2"), Figura.Instance().vrstaZaFiguru("koB2")); lB1.Location = new Point(Figura.Instance().kolonaZaFiguru("lB1"), Figura.Instance().vrstaZaFiguru("lB1")); lB2.Location = new Point(Figura.Instance().kolonaZaFiguru("lB2"), Figura.Instance().vrstaZaFiguru("lB2")); krB1.Location = new Point(Figura.Instance().kolonaZaFiguru("krB1"), Figura.Instance().vrstaZaFiguru("krB1")); kB1.Location = new Point(Figura.Instance().kolonaZaFiguru("kB1"), Figura.Instance().vrstaZaFiguru("kB1")); pictureBox1.Location = new Point(0, 0); //zKrB.Location = new Point(Figura.Instance().kolonaZaFiguru("kB1"), Figura.Instance().vrstaZaFiguru("kB1")); //new Point(Figura.Instance().kolonaZaFiguru("zKrB"), Figura.Instance().vrstaZaFiguru("zKrB")); pC1.Location = new Point(Figura.Instance().kolonaZaFiguru("pC1"), Figura.Instance().vrstaZaFiguru("pC1")); pC2.Location = new Point(Figura.Instance().kolonaZaFiguru("pC2"), Figura.Instance().vrstaZaFiguru("pC2")); pC3.Location = new Point(Figura.Instance().kolonaZaFiguru("pC3"), Figura.Instance().vrstaZaFiguru("pC3")); pC4.Location = new Point(Figura.Instance().kolonaZaFiguru("pC4"), Figura.Instance().vrstaZaFiguru("pC4")); pC5.Location = new Point(Figura.Instance().kolonaZaFiguru("pC5"), Figura.Instance().vrstaZaFiguru("pC5")); pC6.Location = new Point(Figura.Instance().kolonaZaFiguru("pC6"), Figura.Instance().vrstaZaFiguru("pC6")); pC7.Location = new Point(Figura.Instance().kolonaZaFiguru("pC7"), Figura.Instance().vrstaZaFiguru("pC7")); pC8.Location = new Point(Figura.Instance().kolonaZaFiguru("pC8"), Figura.Instance().vrstaZaFiguru("pC8")); tC1.Location = new Point(Figura.Instance().kolonaZaFiguru("tC1"), Figura.Instance().vrstaZaFiguru("tC1")); tC2.Location = new Point(Figura.Instance().kolonaZaFiguru("tC2"), Figura.Instance().vrstaZaFiguru("tC2")); koC1.Location = new Point(Figura.Instance().kolonaZaFiguru("koC1"), Figura.Instance().vrstaZaFiguru("koC1")); koC2.Location = new Point(Figura.Instance().kolonaZaFiguru("koC2"), Figura.Instance().vrstaZaFiguru("koC2")); lC1.Location = new Point(Figura.Instance().kolonaZaFiguru("lC1"), Figura.Instance().vrstaZaFiguru("lC1")); lC2.Location = new Point(Figura.Instance().kolonaZaFiguru("lC2"), Figura.Instance().vrstaZaFiguru("lC2")); krC1.Location = new Point(Figura.Instance().kolonaZaFiguru("krC1"), Figura.Instance().vrstaZaFiguru("krC1")); kC1.Location = new Point(Figura.Instance().kolonaZaFiguru("kC1"), Figura.Instance().vrstaZaFiguru("kC1")); }
/// <summary> /// metoda,ki za trdnjavo izračuna vsa njena delovanja /// </summary> /// <param name="fig">Object: objekt Figura,ki predstavlja trdnjavo</param> /// <returns>list: seznam vseh potez trdnjave</returns> public List<int[]> Trdnjava(Figura fig) { List<int[]> vsePot = new List<int[]>(); //4 smeri premikov string[] vseSmeri = new string[4]; vseSmeri[0] = "+0"; vseSmeri[1] = "-0"; vseSmeri[2] = "0+"; vseSmeri[3] = "0-"; //gremo v vsako smer foreach (string smer in vseSmeri) { //se premikamo po 1 for (int i = 1; i < 8; i++) { //tu shranjujemo koordinate novih polj int novX = 42; int novY = 42; //koordinate so odvisne od smeri in pa števila korakov if (smer == "+0") { novX = fig.x + i; novY = fig.y; } if (smer == "-0") { novX = fig.x - i; novY = fig.y; } if (smer == "0+") { novX = fig.x; novY = fig.y + i; } if (smer == "0-") { novX = fig.x; novY = fig.y - i; } //preverimo nove koordinate,če so na šahovnici if (novX >= 0 && novX < 8 && novY >= 0 && novY < 8) { //tvorimo tabelo iz novih koordinat int[] potLov = new int[2]; potLov[0] = novX; potLov[1] = novY; //če je novo polje prazno,je premik možen in nadaljujemo v tej smeri if (this.sahovnica[novX, novY] == ".") { vsePot.Add(potLov); } //če je na polju nasprotnikova figura je premik možen,nadaljne poteze v tej smeri niso možne if ((this.sahovnica[novX, novY] != ".") && ("" + sahovnica[novX, novY][0] != fig.barvaFigure())) { vsePot.Add(potLov); break; } //če je na polju lastna figura,premik ni možen in prenehamo s premikanjem v tej smeri if ("" + this.sahovnica[novX, novY][0] == fig.barvaFigure()) { break; } } } } return vsePot; }
public int pomeri(int kolona, int vrsta, int novaKolona, int novaVrsta, string napadnutaFigura) { int j = 0; if (novaKolona > kolona && novaVrsta > vrsta && napadnutaFigura != null) { for (int i = 1; i < novaKolona - kolona; i++) { if (Figura.Instance().vratiFiguru(kolona + i, vrsta + i) != null) { return(0); } j = i; } j++; if (novaKolona == kolona + j && novaVrsta == vrsta + j) { return(2); } else { return(0); } } else if (novaKolona > kolona && novaVrsta < vrsta && napadnutaFigura != null) { for (int i = 1; i < novaKolona - kolona; i++) { if (Figura.Instance().vratiFiguru(kolona + i, vrsta - i) != null) { return(0); } j = i; } j++; if (novaKolona == kolona + j && novaVrsta == vrsta - j) { return(2); } else { return(0); } } else if (novaKolona < kolona && novaVrsta > vrsta && napadnutaFigura != null) { for (int i = 1; i < kolona - novaKolona; i++) { if (Figura.Instance().vratiFiguru(kolona - i, vrsta + i) != null) { return(0); } j = i; } j++; if (novaKolona == kolona - j && novaVrsta == vrsta + j) { return(2); } else { return(0); } } else if (novaKolona < kolona && novaVrsta < vrsta && napadnutaFigura != null) { for (int i = 1; i < kolona - novaKolona; i++) { if (Figura.Instance().vratiFiguru(kolona - i, vrsta - i) != null) { return(0); } j = i; } j++; if (novaKolona == kolona - j && novaVrsta == vrsta - j) { return(2); } else { return(0); } } //kretanje else if (novaKolona > kolona && novaVrsta > vrsta && napadnutaFigura == null) { for (int i = 1; i <= novaKolona - kolona; i++) { if (Figura.Instance().vratiFiguru(kolona + i, vrsta + i) != null) { return(0); } j = i; } if (novaKolona == kolona + j && novaVrsta == vrsta + j) { return(1); } else { return(0); } } else if (novaKolona > kolona && novaVrsta < vrsta && napadnutaFigura == null) { for (int i = 1; i <= novaKolona - kolona; i++) { if (Figura.Instance().vratiFiguru(kolona + i, vrsta - i) != null) { return(0); } j = i; } if (novaKolona == kolona + j && novaVrsta == vrsta - j) { return(1); } else { return(0); } } else if (novaKolona < kolona && novaVrsta > vrsta && napadnutaFigura == null) { for (int i = 1; i <= kolona - novaKolona; i++) { if (Figura.Instance().vratiFiguru(kolona - i, vrsta + i) != null) { return(0); } j = i; } if (novaKolona == kolona - j && novaVrsta == vrsta + j) { return(1); } else { return(0); } } else if (novaKolona < kolona && novaVrsta < vrsta && napadnutaFigura == null) { for (int i = 1; i <= kolona - novaKolona; i++) { if (Figura.Instance().vratiFiguru(kolona - i, vrsta - i) != null) { return(0); } j = i; } if (novaKolona == kolona - j && novaVrsta == vrsta - j) { return(1); } else { return(0); } } else { return(0); } }
/// <summary> /// metoda,ki za skakača izračuna vsa njegova delovanja /// </summary> /// <param name="fig">Object: objekt Figura,ki predstavlja skakača</param> /// <returns>list: seznam vseh potez skakača</returns> public List<int[]> Skakac(Figura fig) { List<int[]> vsePot = new List<int[]>(); //generiramo tabelo tabel,vseh novih koordinat skakača int[][] tockaSkak = new int[8][]; int[] T1 = new int[2]; T1[0] = fig.x + 2; T1[1] = fig.y + 1; tockaSkak[0] = T1; int[] T2 = new int[2]; T2[0] = fig.x + 2; T2[1] = fig.y - 1; tockaSkak[1] = T2; int[] T3 = new int[2]; T3[0] = fig.x + 1; T3[1] = fig.y + 2; tockaSkak[2] = T3; int[] T4 = new int[2]; T4[0] = fig.x + 1; T4[1] = fig.y - 2; tockaSkak[3] = T4; int[] T5 = new int[2]; T5[0] = fig.x - 2; T5[1] = fig.y + 1; tockaSkak[4] = T5; int[] T6 = new int[2]; T6[0] = fig.x - 2; T6[1] = fig.y - 1; tockaSkak[5] = T6; int[] T7 = new int[2]; T7[0] = fig.x - 1; T7[1] = fig.y + 2; tockaSkak[6] = T7; int[] T8 = new int[2]; T8[0] = fig.x - 1; T8[1] = fig.y - 2; tockaSkak[7] = T8; //pregledamo vsa nova polja for (int i = 0; i < 8; i++) { //če so na šahovnici... if ((tockaSkak[i][0] < 8) && (tockaSkak[i][0] >= 0) && (tockaSkak[i][1] < 8) && (tockaSkak[i][1] >= 0)) { //če na njih ni lastne figure...jih dodamo if ("" + this.sahovnica[tockaSkak[i][0], tockaSkak[i][1]][0] != fig.barvaFigure()) { vsePot.Add(tockaSkak[i]); } } } return vsePot; }
/// <summary> /// metoda,ki naredi premik ene figure na šahovnici s tem da ustvari nov objekt Sahovnica /// </summary> /// <param name="x">int: vrsta novega polja figure</param> /// <param name="y">int: stolpec novega polja figure</param> /// <param name="f">Object: objekt Figura,katero želimo premakniti</param> /// <returns>Object: objekt Sahovnica,ki predstavlja novo sahovnico</returns> public Sahovnica Premik(int novX, int novY, Figura f) { //novi sahovnici najprej naredimo ustrezno pozicijo string[,] novaSahovnica = (string[,])this.sahovnica.Clone(); novaSahovnica[f.x, f.y] = "."; novaSahovnica[novX, novY] = f.IzpisFigure(); //preverimo ali bo še možno narediti rokade bool novaMozMalRokBeli = this.moznaMalaRokadaBeli; bool novaMozMalRokCrni = this.moznaMalaRokadaCrni; bool novaMozVelRokBeli = this.moznaVelikaRokadaBeli; bool novaMozVelRokCrni = this.moznaVelikaRokadaCrni; int novPravilo50 = this.pravilo50+1; List<int[]> noviMozniEP = new List<int[]>(); //če je prislo do jemanja ali se premakne kmet...zacnemo pravilo50 steti od zacetka if (f.ImeFigure() == "P" || this.sahovnica[novX, novY] != ".") novPravilo50 = 0; //pogledamo če bodo v naslednji potezi mozni EP if (f.ImeFigure() == "P") { if (this.kdo == "b") { if (f.x == 1 && novX == 3) { if (f.y < 7 && f.y > 0) { if (this.sahovnica[3, f.y - 1] == "cP") { noviMozniEP.Add(new int[2] { f.y - 1, f.y }); } if (this.sahovnica[3, f.y + 1] == "cP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } else if (f.y == 7 && this.sahovnica[3, f.y - 1] == "cP") noviMozniEP.Add(new int[2] { f.y - 1, f.y }); else if (f.y == 0 && this.sahovnica[3, f.y + 1] == "cP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } } if (this.kdo == "c") { if (f.x == 6 && novX == 4) { if (f.y < 7 && f.y > 0) { if (this.sahovnica[4, f.y - 1] == "bP") noviMozniEP.Add(new int[2] { f.y - 1, f.y }); if (this.sahovnica[4, f.y + 1] == "bP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } else if (f.y == 7 && this.sahovnica[4, f.y - 1] == "bP") noviMozniEP.Add(new int[2] { f.y - 1, f.y }); else if (f.y == 0 && this.sahovnica[4, f.y + 1] == "bP") noviMozniEP.Add(new int[2] { f.y + 1, f.y }); } } } if (noviMozniEP.Count() == 0) noviMozniEP = null; //če beli premakne katero od trdnjav ali kralja if (f.x == 0) { if (f.y == 0) novaMozVelRokBeli = false; else if (f.y == 7) novaMozMalRokBeli = false; else if (f.y == 4) { novaMozMalRokBeli = false; novaMozVelRokBeli = false; } } //če črni premakne katero od trdnjav ali kralja else if (f.x == 7) { if (f.y == 0) novaMozVelRokCrni = false; else if (f.y == 7) novaMozMalRokCrni = false; else if (f.y == 4) { novaMozMalRokCrni = false; novaMozVelRokCrni = false; } } //če je bil izveden premik na katero od mest trdnjav ali kralja if (novX == 0) { if (novY == 0) novaMozVelRokBeli = false; else if (novY == 7) novaMozMalRokBeli = false; else if (novY == 4) { novaMozMalRokBeli = false; novaMozVelRokBeli = false; } } else if (novX == 7) { if (novY == 0) novaMozVelRokCrni = false; else if (novY == 7) novaMozMalRokCrni = false; else if (novY == 4) { novaMozMalRokCrni = false; novaMozVelRokCrni = false; } } //nato ustvarimo nov objekt Sahovnica z novimi parametri Sahovnica sah = new Sahovnica(novaSahovnica, this.kdo, novaMozMalRokBeli, novaMozMalRokCrni, novaMozVelRokBeli, novaMozVelRokCrni, noviMozniEP, novPravilo50,this.kateraPoteza+1); return sah; }
/// <summary> /// metoda,ki za kmeta izračuna vsa njegova delovanja(brez EP) /// </summary> /// <param name="fig">Object: objekt Figura,ki predstavlja kmeta</param> /// <returns>list: seznam vseh potez kmeta</returns> public List<int[]> Kmet(Figura fig) { List<int[]> vsePot = new List<int[]>(); //definiramo jemanja int[] J1 = new int[2]; int[] J2 = new int[2]; //...beli if (fig.barvaFigure() == "b") { //dva mozna premika int[] T1 = new int[2]; T1[0] = fig.x + 1; T1[1] = fig.y; int[] T2 = new int[2]; T2[0] = fig.x + 2; T2[1] = fig.y; //dve jemanji J1[0] = fig.x + 1; J1[1] = fig.y + 1; J2[0] = fig.x + 1; J2[1] = fig.y - 1; //ce je pred njim prazno polje ga dodamo... if (this.sahovnica[T1[0], T1[1]][0] == '.') { vsePot.Add(T1); //...ce obe polji pred njim prazni in je na zacetku dodamo se drug premik if (fig.x < 6 && this.sahovnica[T2[0], T2[1]][0] == '.' && fig.x == 1) { vsePot.Add(T2); } } } //...crni if (fig.barvaFigure() == "c") { //dva mozna premika int[] T1 = new int[2]; T1[0] = fig.x - 1; T1[1] = fig.y; int[] T2 = new int[2]; T2[0] = fig.x - 2; T2[1] = fig.y; //dve jemanji J1[0] = fig.x - 1; J1[1] = fig.y + 1; J2[0] = fig.x - 1; J2[1] = fig.y - 1; //ce je pred njim prazno polje ga dodamo... if (this.sahovnica[T1[0], T1[1]][0] == '.') { vsePot.Add(T1); //...ce obe polji pred njim prazni in je na zacetku dodamo se drug premik if ((fig.x > 1 && this.sahovnica[T2[0], T2[1]][0] == '.') && (fig.x == 6)) { vsePot.Add(T2); } } } //preverimo še jemanja... int[][] vsaJem = new int[2][]; vsaJem[0] = J1; vsaJem[1] = J2; foreach (int[] jem in vsaJem) { //...ce so znotraj sahovnice if ((jem[1] < 8) && (jem[1] >= 0)) { //...in polje ni prazno ali zasedeno z lastno figuro...dodamo if ((this.sahovnica[jem[0], jem[1]][0] != '.') && ("" + this.sahovnica[jem[0], jem[1]][0] != fig.barvaFigure())) { vsePot.Add(jem); } } } return vsePot; }
/// <summary> /// metoda,ki za vsako figuro pokliče ustrezno metodo glede na to kakšne vrste figura je /// </summary> /// <param name="fig">Object: objekt figura</param> /// <returns>List: seznam vseh potez te figure</returns> public List<int[]> VsePotezeFigura(Figura fig) { //seznam kjer bomo shranili mozne premike List<int[]> vsePot = new List<int[]>(); //kmet... if (fig.ImeFigure() == "P") { vsePot = Kmet(fig); } //skakač else if (fig.ImeFigure() == "S") { vsePot = Skakac(fig); } //lovec else if (fig.ImeFigure() == "L") { vsePot = Lovec(fig); } //trdnjava else if (fig.ImeFigure() == "T") { vsePot = Trdnjava(fig); } //dama else if (fig.ImeFigure() == "D") { vsePot = Dama(fig); } //kralj else if (fig.ImeFigure() == "K") { vsePot = Kralj(fig); } return vsePot; }
/// <summary> /// metoda,ki za damo izračuna vsa njena delovanja(unija lovca in topa) /// </summary> /// <param name="fig">Object: Figura,ki predstavlja damo</param> /// <returns>list: seznam vseh potez dame</returns> public List<int[]> Dama(Figura fig) { List<int[]> vsePot = new List<int[]>(); //spremenimo damo v trdnjavo in izračunamo delovanja this.sahovnica[fig.x, fig.y] = this.kdo + "T"; fig.ime = "T"; vsePot = Trdnjava(fig); //nato spremenimo še v lovca,izračunamo delovanja in dodamo this.sahovnica[fig.x, fig.y] = this.kdo + "L"; fig.ime = "L"; vsePot.AddRange(Lovec(fig)); //na koncu še pozicijo vrnemo nazaj this.sahovnica[fig.x, fig.y] = this.kdo + "D"; fig.ime = "D"; return vsePot; }