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; } }
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; } } }
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(); }
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(); }
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); } }
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); } } }
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); } }
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)); } }
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); }
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; } }
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); } }
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; } } }
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; }
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; } }
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); } }