private void OsveziTekst(String Text) //OVO JE GLAVNI LOOP ZA IGRU... TREBALO BI { if (client == null) { return; } List <int> indeksi = client.Provera(Text.ToCharArray()); char[] chGlavna = txtGlavna.Text.ToCharArray(); txtGlavna.Text = ""; if (indeksi.Count > 0) { for (int i = 0, j = 0, k = 0; i < chGlavna.Length; i++) { if (Char.IsLower(chGlavna [i])) { txtGlavna.Text += chGlavna [i]; k++; continue; } if (j < indeksi.Count && (i - k) == indeksi [j]) { j++; txtGlavna.Text += Text; } else { txtGlavna.Text += chGlavna [i]; } } } PrikaziZivot(); EStatusIgre status = client.Status(); if (status == EStatusIgre.IGRA_ZAVRSENA_POBEDA) { Timer.Stop(); frmUnosRekorda dialog = new frmUnosRekorda(client); dialog.ShowDialog(); frmGlavna f = new frmGlavna(this.Location.X, this.Location.Y); Close(); f.Show(); } else if (status == EStatusIgre.IGRA_ZAVRSENA_PORAZ) { Timer.Stop(); txtGlavna.Text = client.Resenje().ToString(); txtGlavna.Text = ""; char[] ca = client.Resenje(); foreach (char c in ca) { txtGlavna.Text += c; } } }
/** * Metoda koja vraca zadatu rec (film) kao listu karaktera */ public char[] Resenje () { char[] result; if (status == EStatusIgre.IGRA_AKTIVNA) status = EStatusIgre.IGRA_ZAVRSENA_PORAZ; result = film.Naziv.ToCharArray (); if(result.Length < 1) { ServiceFault fault = new ServiceFault ("Greska prilikom preuzimanja resenja!"); throw new FaultException<ServiceFault> (fault); } return result; }
/** * Metoda koja proverava da li se * zadato slovo nalazi u imenu filma \n * vraca listu indexa na kojima se nalazi slovo, * a ako slova nema, praznu listu */ public List<int> Provera (char[] slovo) { List<int> result = new List<int> (); int index; int i; if (status != EStatusIgre.IGRA_AKTIVNA || slovo[0] == '\0') return result; for (i = 0; i < slovo.Length; i++) slovo [i] = Char.ToUpper (slovo [i]); try { if(slovo.Length > 1) slovo = ZamenaKraktera (slovo); } catch (Exception ex) { } for (index = 0; index < nazivFilma.Length; index++) if (nazivFilma [index] == slovo [0]) { result.Add (index); nazivFilma [index] = '\0'; } if (result.Count <= 0) if (++brojPokusaja >= 6) status = EStatusIgre.IGRA_ZAVRSENA_PORAZ; for (i = 0; i < nazivFilma.Length; i++) if (nazivFilma [i] != '\0') break; if (i == nazivFilma.Length) status = EStatusIgre.IGRA_ZAVRSENA_POBEDA; return result; }
/* * Igra */ /** * Metoda koja pokrece igru \n * sve setuje na nulu i snima trenutno * vreme * na serveru */ public int[] PokreniIgru () { brojPokusaja = 0; vremeStart = DateTime.Now; status = EStatusIgre.IGRA_AKTIVNA; List<int> result = new List<int> (); using (DataBase data = new DataBase ()) { int brojFilmova; int rbFilma; Random random = new Random (); try { data.Open (); brojFilmova = data.BrojFilmova (); rbFilma = random.Next (brojFilmova); film = data.PreuzmiFilm (rbFilma); nazivFilma = film.Naziv.ToUpper ().ToCharArray (); nazivFilma = ZamenaKraktera (nazivFilma); } catch (Exception ex) { ServiceFault fault = new ServiceFault ("Greska prilikom preuzimanja filma iz baze!"); throw new FaultException<ServiceFault> (fault); } } result.Add (nazivFilma.Length); for (int i = 0; i < nazivFilma.Length; i++) if (nazivFilma [i] == ' ') { result.Add (i); nazivFilma [i] = '\0'; } return result.ToArray (); }