Beispiel #1
0
        //otvara sva prazna polja oko praznog polja na koji si kliknuo
        private void otvori_prazna_polja_okolo(Button dugme)
        {
            List <Button> prazna_polja;

            prazna_polja = new List <Button>();
            prazna_polja.Add(dugme);


            while (prazna_polja.Count > 0)
            {
                Polje polje = (Polje)prazna_polja[0].Tag;
                int   i     = polje.Red;
                int   j     = polje.Kolona;



                if (proveriPolje(i - 1, j - 1))
                {
                    prazna_polja.Add(dugmici[i - 1, j - 1]);
                }

                if (proveriPolje(i - 1, j))
                {
                    prazna_polja.Add(dugmici[i - 1, j]);
                }

                if (proveriPolje(i - 1, j + 1))
                {
                    prazna_polja.Add(dugmici[i - 1, j + 1]);
                }

                if (proveriPolje(i, j - 1))
                {
                    prazna_polja.Add(dugmici[i, j - 1]);
                }

                if (proveriPolje(i, j + 1))
                {
                    prazna_polja.Add(dugmici[i, j + 1]);
                }

                if (proveriPolje(i + 1, j - 1))
                {
                    prazna_polja.Add(dugmici[i + 1, j - 1]);
                }

                if (proveriPolje(i + 1, j))
                {
                    prazna_polja.Add(dugmici[i + 1, j]);
                }

                if (proveriPolje(i + 1, j + 1))
                {
                    prazna_polja.Add(dugmici[i + 1, j + 1]);
                }

                //brise prvi element
                prazna_polja.RemoveAt(0);
            }
        }
Beispiel #2
0
        //otvara sva polja
        public void otvoriSvaPolja()
        {
            for (int i = 0; i < velicina_matrice; i++)
            {
                for (int j = 0; j < velicina_matrice; j++)
                {
                    Polje polje = dugmici[i, j].Tag as Polje;

                    if (!polje.Zastavica)
                    {
                        if (polje.Vrednost == Vrednost_polja.PRAZNO_POLJE)
                        {
                            dugmici[i, j].IsEnabled = false;
                            dugmici[i, j].Style     = this.FindResource("dugmici_pritisnuto") as Style;
                        }

                        else if (polje.Vrednost == Vrednost_polja.BROJ)
                        {
                            Image img = new Image();
                            img.Source              = Funkcionalnost.obojiBroj(this, polje.Broj_bombi_okolo).Source;
                            dugmici[i, j].Content   = img;
                            dugmici[i, j].IsEnabled = false;
                            dugmici[i, j].Style     = this.FindResource("dugmici_pritisnuto") as Style;
                        }

                        else if (polje.Vrednost == Vrednost_polja.BOMBA)
                        {
                            Image img = new Image();
                            img.Source              = (this.FindResource("bomb") as Image).Source;
                            dugmici[i, j].Style     = this.FindResource("dugmici_pritisnuto") as Style;
                            dugmici[i, j].Content   = img;
                            dugmici[i, j].IsEnabled = false;
                        }
                    }
                    else
                    {
                        if (polje.Vrednost == Vrednost_polja.BOMBA)
                        {
                            dugmici[i, j].MouseRightButtonDown -= desniKlik;
                        }
                        else if (polje.Vrednost != Vrednost_polja.BOMBA)
                        {
                            Image img = new Image();
                            img.Source            = (this.FindResource("Xflag") as Image).Source;
                            dugmici[i, j].Content = img;
                            dugmici[i, j].MouseRightButtonDown -= desniKlik;
                        }
                    }
                }
            }
        }
Beispiel #3
0
        //metoda koja dodaje bombe u matricu na slucajnim pozicijama
        public static void dodavanjeBombi(Button[,] dugmici, int brojBombi, int velicina_matrice)
        {
            int brojac = 0;

            while (brojac < brojBombi)
            {
                int i = random.Next(0, velicina_matrice);
                int j = random.Next(0, velicina_matrice);

                Polje polje = (Polje)dugmici[i, j].Tag;

                if (!polje.Vrednost.Equals(Vrednost_polja.BOMBA))
                {
                    dugmici[i, j].Tag = new Polje(false, Vrednost_polja.BOMBA, i, j);
                    brojac++;
                }
            }
        }
Beispiel #4
0
        //Postavljanje i skidanje zastavica
        private void desniKlik(object sender, MouseEventArgs e)
        {
            if (e.RightButton == MouseButtonState.Pressed)
            {
                Button dugme = (Button)sender;

                if (!((Polje)dugme.Tag).Zastavica && broj_zastavica < broj_bombi)
                {
                    Image img = new Image();
                    img.Source    = (this.FindResource("flag") as Image).Source;
                    dugme.Content = img;
                    ((Polje)dugme.Tag).Zastavica = true;
                    broj_zastavica++;
                }
                else if (((Polje)dugme.Tag).Zastavica)
                {
                    dugme.Content = "";
                    ((Polje)dugme.Tag).Zastavica = false;
                    broj_zastavica--;
                }

                tbBombe.Text = (broj_bombi - broj_zastavica) + "";


                //ako su postavljene sve zastavice ispituje da li je kraj igre
                if (broj_bombi == broj_zastavica)
                {
                    int br = 0;
                    for (int i = 0; i < velicina_matrice; i++)
                    {
                        for (int j = 0; j < velicina_matrice; j++)
                        {
                            Polje polje = dugmici[i, j].Tag as Polje;
                            if (polje.Zastavica && polje.Vrednost == Vrednost_polja.BOMBA)
                            {
                                br++;
                            }
                        }
                    }

                    if (br == broj_bombi)
                    {
                        otvoriSvaPolja();
                        tajmer.Stop();

                        Storyboard sb = this.FindResource("animacija") as Storyboard;
                        btnRestart.BeginStoryboard(sb);


                        trenutni_igrac.Broj_bodova = 1000 - brojac_vremena;

                        if (TopLista.dodajIgracaZaKategoriju(velicina_matrice, trenutni_igrac))
                        {
                            MessageBox.Show("Osvojili ste " + trenutni_igrac.Broj_bodova + " boda i nalazite se medju 10 najboljih igrača ");
                        }
                        else
                        {
                            MessageBox.Show("Osvojili ste " + trenutni_igrac.Broj_bodova + " boda ali niste uspeli da se plasirate medju 10 najboljih igrača ");
                        }
                    }
                }
            }
        }
Beispiel #5
0
        private void pritisnutoDugme(object sender, EventArgs e)
        {
            if (broj_pritisnutih_dugmica == 0)
            {
                tajmer.Start();
            }

            Button dugme         = (Button)sender;
            Polje  polje_dugmeta = (Polje)dugme.Tag;

            if (dugme.IsEnabled && !polje_dugmeta.Zastavica)
            {
                if (polje_dugmeta.Vrednost.Equals(Vrednost_polja.BOMBA))
                {
                    btnRestart.Content = (this.FindResource("sad") as Image);
                    otvoriSvaPolja();
                    dugme.Content = (this.FindResource("bomb_red") as Image);
                    tajmer.Stop();
                    return;
                }

                else if (polje_dugmeta.Vrednost.Equals(Vrednost_polja.BROJ))
                {
                    Image slika_broj = new Image();
                    slika_broj.Source = Funkcionalnost.obojiBroj(this, polje_dugmeta.Broj_bombi_okolo).Source;
                    dugme.Content     = slika_broj;
                    dugme.IsEnabled   = false;
                }

                else
                {
                    dugme.IsEnabled = false;
                    otvori_prazna_polja_okolo(dugme);
                }



                broj_pritisnutih_dugmica = 0;
                //broji pritisnute dugmice
                for (int i = 0; i < velicina_matrice; i++)
                {
                    for (int j = 0; j < velicina_matrice; j++)
                    {
                        if (!dugmici[i, j].IsEnabled)
                        {
                            dugmici[i, j].Style = this.FindResource("dugmici_pritisnuto") as Style;
                            broj_pritisnutih_dugmica++;
                        }
                    }
                }


                //ako su ostale samo bombe
                if ((velicina_matrice * velicina_matrice - broj_bombi) == broj_pritisnutih_dugmica)
                {
                    //Pokretanje animacije
                    btnRestart.BeginStoryboard(this.FindResource("animacija") as Storyboard);
                    tajmer.Stop();
                    trenutni_igrac.Broj_bodova = 1000 - brojac_vremena;


                    if (TopLista.dodajIgracaZaKategoriju(velicina_matrice, trenutni_igrac))
                    {
                        MessageBox.Show("Osvojili ste " + trenutni_igrac.Broj_bodova + " boda i nalazite se medju 10 najboljih igrača ");
                    }
                    else
                    {
                        MessageBox.Show("Osvojili ste " + trenutni_igrac.Broj_bodova + " boda ali niste uspeli da se plasirate medju 10 najboljih igrača ");
                    }

                    //postavlja zastavice na mestima gde se nalaze bombe kada su ostale samo bombe
                    for (int i = 0; i < velicina_matrice; i++)
                    {
                        for (int j = 0; j < velicina_matrice; j++)
                        {
                            if (((Polje)dugmici[i, j].Tag).Vrednost == Vrednost_polja.BOMBA)
                            {
                                ((Polje)dugmici[i, j].Tag).Zastavica = true;
                                dugmici[i, j].MouseRightButtonDown  -= desniKlik;
                                Image img = new Image();
                                img.Source            = (this.FindResource("flag") as Image).Source;
                                dugmici[i, j].Content = img;
                            }
                        }
                    }
                }
            }
        }
Beispiel #6
0
        //metoda koja racuna koliko bombi ima oko polja u matrici
        public static void ispisBrojeva(Button[,] dugmici, int velicina_matrice)
        {
            for (int i = 0; i < velicina_matrice; i++)
            {
                for (int j = 0; j < velicina_matrice; j++)
                {
                    int brojac = 0;

                    Polje polje = (Polje)dugmici[i, j].Tag;

                    if (!polje.Vrednost.Equals(Vrednost_polja.BOMBA))
                    {
                        if ((i - 1 >= 0) && (i - 1 < velicina_matrice) && (j - 1 >= 0) && (j - 1 < velicina_matrice))
                        {
                            if (((Polje)dugmici[i - 1, j - 1].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if ((i - 1 >= 0) && (i - 1 < velicina_matrice) && (j >= 0) && (j < velicina_matrice))
                        {
                            if (((Polje)dugmici[i - 1, j].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if ((i - 1 >= 0) && (i - 1 < velicina_matrice) && (j + 1 >= 0) && (j + 1 < velicina_matrice))
                        {
                            if (((Polje)dugmici[i - 1, j + 1].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if ((i >= 0) && (i < velicina_matrice) && (j - 1 >= 0) && (j - 1 < velicina_matrice))
                        {
                            if (((Polje)dugmici[i, j - 1].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if ((i >= 0) && (i < velicina_matrice) && (j + 1 >= 0) && (j + 1 < velicina_matrice))
                        {
                            if (((Polje)dugmici[i, j + 1].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if ((i + 1 >= 0) && (i + 1 < velicina_matrice) && (j - 1 >= 0) && (j - 1 < velicina_matrice))
                        {
                            if (((Polje)dugmici[i + 1, j - 1].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if ((i + 1 >= 0) && (i + 1 < velicina_matrice) && (j >= 0) && (j < velicina_matrice))
                        {
                            if (((Polje)dugmici[i + 1, j].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if ((i + 1 >= 0) && (i + 1 < velicina_matrice) && (j + 1 >= 0) && (j + 1 < velicina_matrice))
                        {
                            if (((Polje)dugmici[i + 1, j + 1].Tag).Vrednost.Equals(Vrednost_polja.BOMBA))
                            {
                                brojac++;
                            }
                        }

                        if (brojac > 0)
                        {
                            polje.Broj_bombi_okolo = brojac;
                            polje.Vrednost         = Vrednost_polja.BROJ;
                            dugmici[i, j].Tag      = polje;
                        }
                        else
                        {
                            dugmici[i, j].Content = "";
                        }
                    }
                }
            }
        }