Пример #1
0
        public void ZatraziAkciju(TipInterakcije tip, int redni_broj_lika, Smjerovi smjer)
        {
            Kvadrat likZaPomicanje = redni_broj_lika == 0 ? Kvadrat.OkupiraPrviLik : Kvadrat.OkupiraDrugiLik;

            if (redni_broj_lika == 1 && !Nivo().ViseLikova)
            {
                return;
            }

            switch (tip)
            {
            case TipInterakcije.Pomak:
                if (mozePomak(likZaPomicanje, smjer))
                {
                    pomakni(likZaPomicanje, smjer);
                }
                break;

            case TipInterakcije.Rotacija:
                if (mozeRotacija(likZaPomicanje))
                {
                    rotiraj(likZaPomicanje);
                }
                break;

            default:
                break;
            }
        }
Пример #2
0
        private void pomakni(Kvadrat kojiLik, Smjerovi smjer)
        {
            Oblik oblik = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;

            if (oblik == null)
            {
                return;
            }

            if (Nivo().Smjer == suprotanSmjer(smjer))
            {
                nagradni_bodovi--;
            }

            oblik.Pozicija = nxt(oblik.Pozicija.Item1, oblik.Pozicija.Item2, smjer);

            var trenutne_koord = koordinateAktivnogLika(kojiLik);
            var sljedece_koord = new List <Tuple <int, int> >();

            foreach (var k in trenutne_koord)
            {
                var sljedeciIndeksi = nxt(k.Item1, k.Item2, smjer);
                sljedece_koord.Add(sljedeciIndeksi);
                ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2] = kojiLik;
            }

            foreach (var k in trenutne_koord)
            {
                if (!sljedece_koord.Contains(k))
                {
                    ploca[k.Item1, k.Item2] = Kvadrat.Slobodan;
                }
            }
        }
Пример #3
0
        public TipNivoa(int _ID     = 0, List <Oblik> _Oblici = null, int _Brzina = 1, Smjerovi _Smjer = Smjerovi.Dolje,
                        bool _NagKv = false, bool _ViLik      = false, bool _Prep = false)
        {
            ID = _ID; Brzina = _Brzina; Smjer = _Smjer;
            NagradniKvadratici = _NagKv; ViseLikova = _ViLik; Prepreke = _Prep;

            Oblici = _Oblici ?? new List <Oblik>();

            generator = new Random();
        }
Пример #4
0
        public TipNivoa(int _ID = 0, List<Oblik> _Oblici = null, int _Brzina = 1, Smjerovi _Smjer = Smjerovi.Dolje,
            bool _NagKv = false, bool _ViLik = false, bool _Prep = false)
        {
            ID = _ID; Brzina = _Brzina; Smjer = _Smjer;
            NagradniKvadratici = _NagKv; ViseLikova = _ViLik; Prepreke = _Prep;

            Oblici = _Oblici ?? new List<Oblik>();

            generator = new Random();
        }
Пример #5
0
 public void FromXML(XElement x)
 {
     ID = int.Parse(x.Attribute("id").Value);
     Brzina = int.Parse(x.Attribute("brzina").Value);
     NagradniKvadratici = bool.Parse(x.Attribute("nagradnikvadratici").Value);
     Prepreke = bool.Parse(x.Attribute("prepreke").Value);
     ViseLikova = bool.Parse(x.Attribute("viselikova").Value);
     Smjer = (Smjerovi) Enum.Parse(typeof(Smjerovi), x.Attribute("smjer").Value);
     foreach (var o in x.Elements("oblik"))
     {
         Oblik c = Postavke.Oblici.Find(obl => obl.Ime == o.Attribute("ime").Value);
         if (c != null)
             Oblici.Add(c);
     }
 }
Пример #6
0
 public void FromXML(XElement x)
 {
     ID                 = int.Parse(x.Attribute("id").Value);
     Brzina             = int.Parse(x.Attribute("brzina").Value);
     NagradniKvadratici = bool.Parse(x.Attribute("nagradnikvadratici").Value);
     Prepreke           = bool.Parse(x.Attribute("prepreke").Value);
     ViseLikova         = bool.Parse(x.Attribute("viselikova").Value);
     Smjer              = (Smjerovi)Enum.Parse(typeof(Smjerovi), x.Attribute("smjer").Value);
     foreach (var o in x.Elements("oblik"))
     {
         Oblik c = Postavke.Oblici.Find(obl => obl.Ime == o.Attribute("ime").Value);
         if (c != null)
         {
             Oblici.Add(c);
         }
     }
 }
Пример #7
0
        private Smjerovi suprotanSmjer(Smjerovi s)
        {
            switch (s)
            {
            case Smjerovi.Desno:
                return(Smjerovi.Lijevo);

            case Smjerovi.Lijevo:
                return(Smjerovi.Desno);

            case Smjerovi.Gore:
                return(Smjerovi.Dolje);

            default:
            case Smjerovi.Dolje:
                return(Smjerovi.Gore);
            }
        }
Пример #8
0
        private Tuple <int, int> nxt(int red, int stup, Smjerovi smjer)
        {
            switch (smjer)
            {
            case Smjerovi.Dolje:
                return(new Tuple <int, int>(red + 1, stup));

            case Smjerovi.Gore:
                return(new Tuple <int, int>(red - 1, stup));

            case Smjerovi.Desno:
                return(new Tuple <int, int>(red, stup + 1));

            case Smjerovi.Lijevo:
            default:
                return(new Tuple <int, int>(red, stup - 1));
            }
        }
Пример #9
0
        private bool mozePomak(Kvadrat kojiLik, Smjerovi smjer)
        {
            if (Nivo().Smjer == suprotanSmjer(smjer) && (nagradni_bodovi <= 0 || !Nivo().NagradniKvadratici))
            {
                return(false);
            }

            for (int i = 1; i < tip_igre.Redaka + 1; ++i)
            {
                for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
                {
                    if (ploca[i, j] == kojiLik)
                    {
                        var sljedeciIndeksi = nxt(i, j, smjer);
                        if (!uGranicama(sljedeciIndeksi) || zauzet(ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]) || okupiraDrugi(kojiLik, ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]))
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
Пример #10
0
 private Smjerovi suprotanSmjer(Smjerovi s)
 {
     switch (s)
     {
         case Smjerovi.Desno:
             return Smjerovi.Lijevo;
         case Smjerovi.Lijevo:
             return Smjerovi.Desno;
         case Smjerovi.Gore:
             return Smjerovi.Dolje;
         default:
         case Smjerovi.Dolje:
             return Smjerovi.Gore;
     }
 }
Пример #11
0
 private Tuple<int, int> nxt(int red, int stup, Smjerovi smjer)
 {
     switch (smjer)
     {
         case Smjerovi.Dolje:
             return new Tuple<int, int>(red + 1, stup);
         case Smjerovi.Gore:
             return new Tuple<int, int>(red - 1, stup);
         case Smjerovi.Desno:
             return new Tuple<int, int>(red, stup + 1);
         case Smjerovi.Lijevo:
         default:
             return new Tuple<int, int>(red, stup - 1);
     }
 }
Пример #12
0
        private void pomakni(Kvadrat kojiLik, Smjerovi smjer)
        {
            Oblik oblik = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;
            if (oblik == null)
                return;

            if (Nivo().Smjer == suprotanSmjer(smjer))
                nagradni_bodovi--;

            oblik.Pozicija = nxt(oblik.Pozicija.Item1, oblik.Pozicija.Item2, smjer);

            var trenutne_koord = koordinateAktivnogLika(kojiLik);
            var sljedece_koord = new List<Tuple<int, int>>();
            foreach(var k in trenutne_koord){
                var sljedeciIndeksi = nxt(k.Item1, k.Item2, smjer);
                sljedece_koord.Add(sljedeciIndeksi);
                ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2] = kojiLik;
            }

            foreach (var k in trenutne_koord)
            {
                if (!sljedece_koord.Contains(k))
                {
                    ploca[k.Item1, k.Item2] = Kvadrat.Slobodan;
                }
            }
        }
Пример #13
0
        private bool mozePomak(Kvadrat kojiLik, Smjerovi smjer){
            if (Nivo().Smjer == suprotanSmjer(smjer) && (nagradni_bodovi <= 0 || !Nivo().NagradniKvadratici))
                return false;

            for (int i = 1; i < tip_igre.Redaka + 1; ++i)
                for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
                    if (ploca[i, j] == kojiLik)
                    {
                        var sljedeciIndeksi = nxt(i,j, smjer);
                        if (!uGranicama(sljedeciIndeksi) || zauzet(ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]) || okupiraDrugi(kojiLik, ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]))
                        {
                            return false;
                        }
                    }
            return true;
        }
Пример #14
0
        public void ZatraziAkciju(TipInterakcije tip, int redni_broj_lika, Smjerovi smjer)
        {
            Kvadrat likZaPomicanje = redni_broj_lika == 0 ? Kvadrat.OkupiraPrviLik : Kvadrat.OkupiraDrugiLik;

            if (redni_broj_lika == 1 && !Nivo().ViseLikova) return;

            switch (tip)
            {
                case TipInterakcije.Pomak:
                    if (mozePomak(likZaPomicanje, smjer))
                    {
                        pomakni(likZaPomicanje, smjer);
                    }
                    break;
                case TipInterakcije.Rotacija:
                    if (mozeRotacija(likZaPomicanje))
                    {
                        rotiraj(likZaPomicanje);
                    }
                    break;
                default:
                    break;
            }
        }
Пример #15
0
        private void pokaziDemo()
        {
            while (true)
            {
                Thread.Sleep(2000);
                LinearGradientBrush old = new LinearGradientBrush();

                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    old = (LinearGradientBrush)DodajButton.Background;
                    DodajButton.Background = Brushes.Red;
                });
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    DodajButton.Background = old;
                });

                Thread.Sleep(200);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    gridSmjer.IsEnabled     = true;
                    DodajButton.IsEnabled   = false;
                    Odustani.Visibility     = Visibility.Visible;
                    SacuvajSmjer.Visibility = Visibility.Visible;
                    SelectedSmjer           = new Smjer();
                });
                EnableIzmijeni = false;
                EnableIzbrisi  = false;
                RezimPregled   = false;


                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    idBox.Background = Brushes.Red;
                });
                SelectedSmjer.Id = "S";
                Thread.Sleep(300);
                SelectedSmjer.Id = "S1";
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    idBox.Background = Brushes.White;
                });
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    nazivBox.Background = Brushes.Red;
                });

                Thread.Sleep(1000);
                SelectedSmjer.Naziv = "N";
                Thread.Sleep(300);
                SelectedSmjer.Naziv = "N1";
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    nazivBox.Background = Brushes.White;
                });

                Thread.Sleep(1000);

                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    opisBox.Background = Brushes.Red;
                });
                SelectedSmjer.Opis = "O";
                Thread.Sleep(300);
                SelectedSmjer.Opis = "Op";
                Thread.Sleep(300);
                SelectedSmjer.Opis = "Opi";
                Thread.Sleep(300);
                SelectedSmjer.Opis = "Opis";
                Thread.Sleep(500);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    nazivBox.Background = Brushes.White;
                });
                Thread.Sleep(200);

                Thread.Sleep(1000);



                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    dateBox.IsDropDownOpen = true;
                });
                Thread.Sleep(1000);
                SelectedSmjer.DatumUvodjenja = "12/02/1995";
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    dateBox.IsDropDownOpen = false;
                });


                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    SacuvajSmjer.Background = Brushes.Red;
                });
                Thread.Sleep(1000);



                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    SacuvajSmjer.Background = old;
                });
                Thread.Sleep(500);

                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    Smjerovi.Add(SelectedSmjer);
                });
                RezimPregled   = true;
                EnableIzbrisi  = true;
                EnableIzmijeni = true;
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    SacuvajSmjer.Visibility    = Visibility.Hidden;
                    Odustani.Visibility        = Visibility.Hidden;
                    SacuvajIzmjenu.Visibility  = Visibility.Hidden;
                    IzmjenaOdustani.Visibility = Visibility.Hidden;
                    DodajButton.IsEnabled      = true;
                });
                Thread.Sleep(2000);

                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    IzmijeniButton.Background = Brushes.Red;
                });
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    IzmijeniButton.Background = old;
                });

                Thread.Sleep(200);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    gridSmjer.IsEnabled        = true;
                    DodajButton.IsEnabled      = false;
                    IzmjenaOdustani.Visibility = Visibility.Visible;
                    SacuvajIzmjenu.Visibility  = Visibility.Visible;
                });
                EnableIzmijeni = false;
                EnableIzbrisi  = false;
                RezimPregled   = false;


                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    opisBox.Background = Brushes.Red;
                });
                SelectedSmjer.Opis = "d";
                Thread.Sleep(300);
                SelectedSmjer.Opis = "dr";
                Thread.Sleep(300);
                SelectedSmjer.Opis = "dru";
                Thread.Sleep(300);
                SelectedSmjer.Opis = "drug";
                Thread.Sleep(300);
                SelectedSmjer.Opis = "drugi";
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    opisBox.Background = Brushes.White;
                });
                Thread.Sleep(1000);

                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    SacuvajIzmjenu.Background = Brushes.Red;
                });
                Thread.Sleep(600);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    SacuvajIzmjenu.Background = old;
                });
                Thread.Sleep(500);


                RezimPregled   = true;
                EnableIzbrisi  = true;
                EnableIzmijeni = true;
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    SacuvajSmjer.Visibility    = Visibility.Hidden;
                    Odustani.Visibility        = Visibility.Hidden;
                    SacuvajIzmjenu.Visibility  = Visibility.Hidden;
                    IzmjenaOdustani.Visibility = Visibility.Hidden;
                    DodajButton.IsEnabled      = true;
                });
                Thread.Sleep(2000);

                //obrisi
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    ObrisiButton.Background = Brushes.Red;
                });
                Thread.Sleep(1000);
                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    ObrisiButton.Background = old;
                });


                Thread.Sleep(1000);

                App.Current.Dispatcher.Invoke((Action) delegate
                {
                    Smjerovi.Remove(SelectedSmjer);
                    if (Smjerovi.Count > 0)
                    {
                        SelectedSmjer            = Smjerovi[0];
                        var item                 = dgrSmjerovi.Items[0];
                        dgrSmjerovi.SelectedItem = item;
                        EnableIzmijeni           = true;
                        EnableIzbrisi            = true;
                    }
                    else
                    {
                        SelectedSmjer  = null;
                        EnableIzmijeni = false;
                        EnableIzbrisi  = false;
                    }
                    RezimPregled = true;
                });

                Thread.Sleep(2000);
            }
        }