Beispiel #1
0
        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 ();
		}