/* * Vytvoreni lusticiho souboje */ private void Lusteni() { int typSifry = new Random(id).Next(1, 4);//nahodne vzbrani sifry String zprava = ""; String reseni = ""; String[,] sifra = new String[, ] { { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }, { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." }, { "-.", ".---", ".-.-", ".--", "-", "--.-", "..-", "----", "--", "-...", ".-.", "-.--", "..", ".-", "...", "-..-", "..-.", "-.-", "---", ".", "--.", "---.", "-..", ".--.", ".-..", "..--" }, { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26" }, { "2", "22", "222", "3", "33", "333", "4", "44", "444", "5", "55", "555", "6", "66", "666", "7", "77", "777", "7777", "8", "88", "888", "9", "99", "999", "9999" } }; MySqlCommand prikaz = new MySqlCommand("Select slovo from bakalarka.lusteni where idlusteni=@id"); prikaz.Parameters.AddWithValue("@id", new Random(id).Next(1, 4));// Databaze obsahuje 100 slov, ale zatim jenom 4 snif MySqlDataReader data = DBConnector.ProvedeniPrikazuSelect(prikaz); List <char> znaky = new List <char>(); while (data.Read()) { reseni = data["slovo"].ToString(); znaky.AddRange(data["slovo"].ToString().ToCharArray()); } foreach (char znak in znaky)//vyhleda sifru pro kazdy znak a vlozeno do zpravy { int i = 0; Boolean stop = true; while (stop) { if (znak.ToString().Equals(sifra[0, i])) { zprava += sifra[typSifry, i]; if (typSifry == 1 || typSifry == 2)//morseovka se oddeluje lomitkem { zprava += "/"; } else { zprava += " "; } stop = false; } else { i++; } } } var sifraLBL = new Label() { Text = zprava }; var vysledek = new Entry(); var hotovo = new Button() { Text = "Hotovo" }; Grid.SetColumnSpan(sifraLBL, 3); Grid.SetColumn(sifraLBL, 0); Grid.SetRow(sifraLBL, 1); Hra.bojiste.Children.Add(sifraLBL); Grid.SetColumnSpan(vysledek, 3); Grid.SetColumn(vysledek, 0); Grid.SetRow(vysledek, 2); Hra.bojiste.Children.Add(vysledek); Grid.SetColumnSpan(hotovo, 3); Grid.SetColumn(hotovo, 0); Grid.SetRow(hotovo, 3); Hra.bojiste.Children.Add(hotovo); hotovo.Clicked += async(sender, args) => { if (vysledek.Text == reseni) { hotovo.IsEnabled = false; await Vyhodnoceni(); } }; }
/* * Smena produktu na jiny produkt dle receptu */ public String Smena() { //overeni ze uzivatel na to ma suroviny if (mnozstvi1 > Hra.produkty.Find(item => item.id == id1).ulozene || mnozstvi2 > Hra.produkty.Find(item => item.id == id2).ulozene) { return("Nedostatek surovin na smenu"); } if (id3 != 0) { if (mnozstvi3 > Hra.produkty.Find(item => item.id == id3).ulozene) { return("Nedostatek surovin na smenu"); } } //smazani prvni prisady MySqlCommand smazaniprisada1 = new MySqlCommand(); for (int i = 0; i < mnozstvi1; i++) { smazaniprisada1.CommandText += "Delete from bakalarka.sklad where idprodukt=@idprodukt and idtym=@idtym limit 1;"; } smazaniprisada1.Parameters.AddWithValue("@idprodukt", id1); smazaniprisada1.Parameters.AddWithValue("@idtym", Hrac.tym); String prubeh = DBConnector.ProvedeniPrikazuOstatni(smazaniprisada1); Hra.produkty.Find(item => item.id == id1).ulozene -= mnozstvi1; if (prubeh != null) { return("neco se pokazilo pri mazani prisady1"); } //smazani druhe prisady MySqlCommand smazaniprisada2 = new MySqlCommand(); for (int i = 0; i < mnozstvi2; i++) { smazaniprisada2.CommandText += "Delete from bakalarka.sklad where idprodukt=@idprodukt and idtym=@idtym limit 1;"; } smazaniprisada2.Parameters.AddWithValue("@idprodukt", id2); smazaniprisada2.Parameters.AddWithValue("@idtym", Hrac.tym); prubeh = DBConnector.ProvedeniPrikazuOstatni(smazaniprisada2); Hra.produkty.Find(item => item.id == id2).ulozene -= mnozstvi2; if (prubeh != null) { return("neco se pokazilo pri mazani prisady2"); } //smazani treti prisady pokud je potreba if (prisada3 != null) { MySqlCommand smazaniprisada3 = new MySqlCommand(); for (int i = 0; i < mnozstvi3; i++) { smazaniprisada3.CommandText += "Delete from bakalarka.sklad where idprodukt=@idprodukt and idtym=@idtym limit 1;"; } smazaniprisada3.Parameters.AddWithValue("@idprodukt", id3); smazaniprisada3.Parameters.AddWithValue("@idtym", Hrac.tym); prubeh = DBConnector.ProvedeniPrikazuOstatni(smazaniprisada3); Hra.produkty.Find(item => item.id == id3).ulozene -= mnozstvi3; if (prubeh != null) { return("neco se pokazilo pri mazani prisady3"); } } //pridani vysledku do skladu MySqlCommand pridani = new MySqlCommand("INSERT INTO `bakalarka`.`sklad` (`idprodukt`, `idtym`) VALUES (@idprodukt, @idtym);"); pridani.Parameters.AddWithValue("@idprodukt", vysledek); pridani.Parameters.AddWithValue("@idtym", Hrac.tym); prubeh = DBConnector.ProvedeniPrikazuOstatni(pridani); Hra.produkty.Find(item => item.id == vysledek).ulozene++; if (prubeh != null) { return("Neco se pokazilo pri vkladani vysledku"); } //stastny konec return(null); }
/* * Metoda pomoci ktere prijmeme souboj */ static String PrijmoutSouboj() { Hra.bojiste.Children.Clear(); var kodlbl = new Label { Text = "Kód souboje:" }; var kod = new Entry { Keyboard = Keyboard.Numeric }; var potvrdit = new Button { Text = "Potvrdit", BackgroundColor = Color.RoyalBlue, TextColor = Color.DarkGray, FontSize = 15, CornerRadius = 4, BorderColor = Color.DarkGray, BorderWidth = 2 }; var zpet = new Button { Text = "Zpět", BackgroundColor = Color.DarkGray, TextColor = Color.RoyalBlue, FontSize = 15, CornerRadius = 4, BorderColor = Color.RoyalBlue, BorderWidth = 2 }; Hra.bojiste.Children.Add(kodlbl, 0, 1); Hra.bojiste.Children.Add(kod, 1, 1); Grid.SetColumnSpan(potvrdit, 3); Grid.SetColumn(potvrdit, 0); Grid.SetRow(potvrdit, 2); Hra.bojiste.Children.Add(potvrdit); Grid.SetColumnSpan(zpet, 3); Grid.SetColumn(zpet, 0); Grid.SetRow(zpet, 3); Hra.bojiste.Children.Add(zpet); zpet.Clicked += async(sender, args) => { BojisteUvod(); }; potvrdit.Clicked += async(sender, args) => { MySqlCommand prikaz = new MySqlCommand("Select * from bakalarka.souboj where idsouboj=@id;"); prikaz.Parameters.AddWithValue("@id", kod.Text); MySqlDataReader data = DBConnector.ProvedeniPrikazuSelect(prikaz); data.Read(); if (data.HasRows) { MySqlCommand prikazUpdate = new MySqlCommand("update bakalarka.souboj set uzivatel2=@iduzivatel where idsouboj=@idsouboj;"); prikazUpdate.Parameters.AddWithValue("@iduzivatel", Hrac.iduzivatel); prikazUpdate.Parameters.AddWithValue("@idsouboj", kod.Text); DBConnector.ProvedeniPrikazuOstatni(prikazUpdate); Hra.bojiste.Children.Clear(); //stranka pripraven do bojeeee a vlozeni uzivatele do tabulky var lbl = new Label() { Text = "Souboj " + kod.Text }; Grid.SetColumnSpan(lbl, 3); Grid.SetColumn(lbl, 0); Grid.SetRow(lbl, 1); Hra.bojiste.Children.Add(lbl); var start = new Button() { Text = "Start", BackgroundColor = Color.RoyalBlue, TextColor = Color.DarkGray, FontSize = 15, CornerRadius = 4, BorderColor = Color.DarkGray, BorderWidth = 2 }; Grid.SetColumnSpan(start, 3); Grid.SetColumn(start, 0); Grid.SetRow(start, 2); Hra.bojiste.Children.Add(start); start.Clicked += async(sender1, args1) => { Souboj boj = new Souboj((int)data["idtyp_souboje"], (int)data["idsouboj"], 2); // do booojeeee pro test typ souboje 2 }; } else { await Application.Current.MainPage.DisplayAlert("Chyba", "Zadaný kód je špatný!", "Zavřít"); } }; return(null); }
/* * Metado pomoci ktere se vyvola souboj */ static String VyvolatSouboj() { Hra.bojiste.Children.Clear(); int idSouboje = ((Hrac.iduzivatel * 10) + (boju++)) * 100000 + new Random().Next(100, 999); int typSouboje = new Random().Next(1, 3); MySqlCommand prikaz = new MySqlCommand("INSERT INTO `bakalarka`.`souboj` (`uzivatel1`, `idsouboj`,`idtyp_souboje`) VALUES (@idhrac, @idsouboj, @idtyp);"); prikaz.Parameters.AddWithValue("@idhrac", Hrac.iduzivatel); prikaz.Parameters.AddWithValue("@idsouboj", idSouboje); //vic jak tisic jich nezvladne prikaz.Parameters.AddWithValue("@idtyp", typSouboje); String prubeh = DBConnector.ProvedeniPrikazuOstatni(prikaz); if (prubeh == null) { Label idHry = new Label { Text = "Souboj: " + idSouboje.ToString() }; Grid.SetColumnSpan(idHry, 3); Grid.SetColumn(idHry, 0); Grid.SetRow(idHry, 1); Hra.bojiste.Children.Add(idHry); Button start = new Button { Text = "Start", BackgroundColor = Color.RoyalBlue, TextColor = Color.DarkGray, FontSize = 15, CornerRadius = 4, BorderColor = Color.DarkGray, BorderWidth = 2 }; Grid.SetColumnSpan(start, 3); Grid.SetColumn(start, 0); Grid.SetRow(start, 2); Hra.bojiste.Children.Add(start); Button zpet = new Button { Text = "Zpět", BackgroundColor = Color.DarkGray, TextColor = Color.RoyalBlue, FontSize = 15, CornerRadius = 4, BorderColor = Color.RoyalBlue, BorderWidth = 2 }; Grid.SetColumnSpan(zpet, 3); Grid.SetColumn(zpet, 0); Grid.SetRow(zpet, 3); Hra.bojiste.Children.Add(zpet); start.Clicked += async(sender, args) => // zacatek biiiiiitvyyy { MySqlCommand prikazSouper = new MySqlCommand("Select uzivatel2 from bakalarka.souboj where idsouboj=@id; "); prikazSouper.Parameters.AddWithValue("@id", idSouboje); MySqlDataReader data = DBConnector.ProvedeniPrikazuSelect(prikazSouper); data.Read(); if (!Convert.IsDBNull(data["uzivatel2"])) //zjisteni jestli je protivnik pripraven do boje { Souboj boj = new Souboj(typSouboje, idSouboje, 1); //pro TEST posilame jednicku pak zmenit na typSouoboje } else { await Application.Current.MainPage.DisplayAlert("Chyba", "Soupeř ještě není připraven.", "Zavřít"); } }; zpet.Clicked += async(sender, args) => { BojisteUvod(); }; } else { BojisteUvod(); } return(null); }
/* * Metoda nova hra slouzi k vytvoreni nove hre. ukaze mapu a vygeneruje hrace a tymy */ public static String novaHra(String roh1X, String roh1Y, String roh2X, String roh2Y, String roh3X, String roh3Y, String roh4X, String roh4Y, int zakladatel, int tymu, int hracu, String nazev) { MySqlCommand prikaz = new MySqlCommand("INSERT INTO bakalarka.hra (`zakladatel`, `roh1X`, `roh1Y`, `roh2X`, `roh2Y`, `roh3X`, `roh3Y`, `roh4X`, `roh4Y`,`nazev` ) VALUES ( @zakladatel ,@roh1X ,@roh1Y,@roh2X,@roh2Y,@roh3X,@roh3Y,@roh4X,@roh4Y,@nazev);"); prikaz.Parameters.AddWithValue("@zakladatel", zakladatel); prikaz.Parameters.AddWithValue("@roh1X", roh1X); prikaz.Parameters.AddWithValue("@roh1Y", roh1Y); prikaz.Parameters.AddWithValue("@roh2X", roh2X); prikaz.Parameters.AddWithValue("@roh2Y", roh2Y); prikaz.Parameters.AddWithValue("@roh3X", roh3X); prikaz.Parameters.AddWithValue("@roh3Y", roh3Y); prikaz.Parameters.AddWithValue("@roh4X", roh4X); prikaz.Parameters.AddWithValue("@roh4Y", roh4Y); prikaz.Parameters.AddWithValue("@nazev", nazev); String prubeh = DBConnector.ProvedeniPrikazuOstatni(prikaz); if (prubeh == null) { idHry(nazev); //vytvoreni polohy produktu polohaProduktu(); //vygenerovani tymu a hracu for (int y = 0; y < tymu; y++) { var rand = new Random(); int idtym = 0; MySqlCommand prikaztym = new MySqlCommand("INSERT INTO `bakalarka`.`tym` (`nazev`, `hra`,uskladani,oziveni) VALUES (@nazev,@idhry,@ulozeni,@oziveni);"); prikaztym.Parameters.AddWithValue("@nazev", y); prikaztym.Parameters.AddWithValue("@idhry", idhry); prikaztym.Parameters.AddWithValue("@ulozeni", rand.Next(100000, 999999)); prikaztym.Parameters.AddWithValue("@oziveni", rand.Next(100000, 999999)); prubeh = DBConnector.ProvedeniPrikazuOstatni(prikaztym); if (prubeh == null) { MySqlCommand prikazidtym = new MySqlCommand("Select idtym from bakalarka.tym where nazev=@nazev and hra=@idhra"); prikazidtym.Parameters.AddWithValue("@nazev", Convert.ToString(y)); prikazidtym.Parameters.AddWithValue("@idhra", idhry); MySqlDataReader dataidtym = DBConnector.ProvedeniPrikazuSelect(prikazidtym); if (dataidtym.HasRows) { while (dataidtym.Read()) { idtym = (int)dataidtym["idtym"]; } } else { return("nenacte se tym"); } //vytvoreni hracu MySqlCommand prikazhrac = new MySqlCommand("INSERT INTO `bakalarka`.`uzivatel` (`jmeno`, `role`, `tym`, `heslo`,zivot, pocetUlozeni) VALUES (@jmeno,@role,@tym,@heslo,1, 0);"); var jmeno = new MySqlParameter("@jmeno", MySqlDbType.String); prikazhrac.Parameters.Add(jmeno); prikazhrac.Parameters.AddWithValue("@tym", idtym); prikazhrac.Parameters.AddWithValue("@heslo", rand.Next(10000, 20000)); var role = new MySqlParameter("@role", MySqlDbType.Int32); prikazhrac.Parameters.Add(role); double pocetlovcu = ((double)hracu - (double)1) / (double)3; //tretina hracu jsou lovci //role lovec 1 for (int z = 0; z < Math.Round(pocetlovcu); z++) { role.Value = 1; jmeno.Value = "hrac" + rand.Next(10000, 20000); prubeh = DBConnector.ProvedeniPrikazuOstatni(prikazhrac); if (prubeh != null) { return("vytvareni lovce" + prubeh); } } //role tezer 2 for (int z = 0; z < hracu - 1 - Math.Round(pocetlovcu); z++) { role.Value = 2; jmeno.Value = "hrac" + rand.Next(10000, 20000); prubeh = DBConnector.ProvedeniPrikazuOstatni(prikazhrac); if (prubeh != null) { return("vytvareni tezere" + prubeh); } } //role domecek 3 role.Value = 3; jmeno.Value = "hrac" + rand.Next(10000, 20000); prubeh = DBConnector.ProvedeniPrikazuOstatni(prikazhrac); if (prubeh != null) { return("vytvareni domecku" + prubeh); } } else { return("pokazil se insert tym" + prubeh); } } return(null); } else { return("pokazilo se to pri vytvareni hry:(" + prubeh); } }
/* * Vytvoreni polohy produktu */ static void polohaProduktu() { MySqlCommand prikazHra = new MySqlCommand("select * from bakalarka.hra;"); MySqlDataReader dataHra = DBConnector.ProvedeniPrikazuSelect(prikazHra); double roh1x = 0, roh1y = 0, roh2x = 0, roh2y = 0, roh3x = 0, roh3y = 0, roh4x = 0, roh4y = 0; while (dataHra.Read()) { roh1x = (double)dataHra["roh1X"]; roh1y = (double)dataHra["roh1Y"]; roh2x = (double)dataHra["roh2X"]; roh2y = (double)dataHra["roh2Y"]; roh3x = (double)dataHra["roh3X"]; roh3y = (double)dataHra["roh3Y"]; roh4x = (double)dataHra["roh4X"]; roh4y = (double)dataHra["roh4Y"]; Bod[] hraciPole = { new Bod(roh1x, roh1y), new Bod(roh2x, roh2y), new Bod(roh3x, roh3y), new Bod(roh4x, roh4y) }; MySqlCommand prikazProdukty = new MySqlCommand("Select idprodukt from bakalarka.produkt where uroven=1;"); MySqlDataReader data = DBConnector.ProvedeniPrikazuSelect(prikazProdukty); double[] y = { roh1y, roh2y, roh3y, roh4y }; double yMin = y.Min(); double yMax = y.Max(); double[] x = { roh1x, roh2x, roh3x, roh4x }; double xMin = x.Min(); double xMax = x.Max(); while (data.Read()) { Boolean prvniSouradnice = true; Boolean druhaSouradnice = true; Bod prvni = new Bod(); Bod druha = new Bod(); while (prvniSouradnice) // dokud neni souradnice v polygonu { prvni.X = new Random().NextDouble() * (xMax - xMin) + xMin; prvni.Y = new Random().NextDouble() * (yMax - yMin) + yMin; if (BodVPolygonu(hraciPole, prvni)) { prvniSouradnice = false; } } while (druhaSouradnice) // dokud neni souradnice v polygonu { druha.X = new Random().NextDouble() * (xMax - xMin) + xMin; druha.Y = new Random().NextDouble() * (yMax - yMin) + yMin; if (BodVPolygonu(hraciPole, druha)) { druhaSouradnice = false; } } MySqlCommand prikazPoloha = new MySqlCommand("insert into bakalarka.polohaProduktu (x1,y1,x2,y2,idhra,idprodukt) values(@x1,@y1,@x2,@y2,@idhra,@idprodukt);"); prikazPoloha.Parameters.AddWithValue("@x1", prvni.X); prikazPoloha.Parameters.AddWithValue("@y1", prvni.Y); prikazPoloha.Parameters.AddWithValue("@x2", druha.X); prikazPoloha.Parameters.AddWithValue("@y2", druha.Y); prikazPoloha.Parameters.AddWithValue("@idhra", (int)dataHra["idhra"]); prikazPoloha.Parameters.AddWithValue("@idprodukt", (int)data["idprodukt"]); DBConnector.ProvedeniPrikazuOstatni(prikazPoloha); } } }