private void urediLikove(Kvadrat koji) { if (koji == Kvadrat.OkupiraPrviLik) { if (sljedeciOblikPrvi != null) { aktivniOblikPrvi = sljedeciOblikPrvi; sljedeciOblikPrvi = SljedeciOblik(); } else { aktivniOblikPrvi = SljedeciOblik(); sljedeciOblikPrvi = SljedeciOblik(); } } if (koji == Kvadrat.OkupiraDrugiLik) { if (sljedeciOblikDrugi != null) { aktivniOblikDrugi = sljedeciOblikDrugi; sljedeciOblikDrugi = SljedeciOblik(); } else { aktivniOblikDrugi = SljedeciOblik(); sljedeciOblikDrugi = SljedeciOblik(); } } }
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 static Oblik NapraviOblik(XElement x) { Oblik o = new Oblik(); o.FromXML(x); return(o); }
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 bool mozeRotacija(Kvadrat kojiLik) { Oblik koji = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi; bool[,] rotirano = koji.SimulirajRotaciju(); var boundingBox = koji.Pozicija; for (int i = boundingBox.Item1, k = 0; i < boundingBox.Item1 + 4; ++i, ++k) { for (int j = boundingBox.Item2, l = 0; j < boundingBox.Item2 + 4; ++j, ++l) { if (i < 0 || j < 0 || rotirano[k, l] && ((ploca[i, j] != Kvadrat.Slobodan && ploca[i, j] != kojiLik) || !uGranicama(new Tuple <int, int>(i, j)))) { return(false); } } } return(true); }
public static void FromXML(XElement x) { foreach (var o in x.Elements("oblik")) { Oblici.Add(Oblik.NapraviOblik(o)); } foreach (var o in x.Elements("igra")) { TipoviIgara.Add(TipIgre.NapraviTipIgre(o)); } foreach (var o in x.Elements("rezultat")) { DodajRezultat(o.Attribute("tipigre").Value, o.Attribute("igrac").Value, int.Parse(o.Attribute("nivo").Value), int.Parse(o.Attribute("bodovi").Value)); } }
void pohrani() { if (prikazivanje_u_tijeku) { return; } Oblik o = Postavke.Oblici[aktivni_oblik]; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { string ime_g = "c" + i.ToString() + j.ToString(); Control[] r = panel1.Controls.Find(ime_g, false); o[i, j] = ((CheckBox)r[0]).Checked; } } o.Boja = panel2.BackColor; Postavke.Pohrani(); }
private void rotiraj(Kvadrat kojiLik) { Oblik koji = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi; koji.Rotiraj(); var boundingBox = koji.Pozicija; for (int i = boundingBox.Item1, k = 0; i < boundingBox.Item1 + 4; ++i, ++k) { for (int j = boundingBox.Item2, l = 0; j < boundingBox.Item2 + 4; ++j, ++l) { if (koji.Celije[k, l]) { ploca[i, j] = kojiLik; } else if (!koji.Celije[k, l] && ploca[i, j] == kojiLik) { ploca[i, j] = Kvadrat.Slobodan; } } } }
void prikazi() { prikazivanje_u_tijeku = true; panel1.Enabled = true; foreach (Control c in panel1.Controls) { c.Enabled = true; } Oblik o = Postavke.Oblici[aktivni_oblik]; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { string ime_g = "c" + i.ToString() + j.ToString(); Control[] r = panel1.Controls.Find(ime_g, false); ((CheckBox)r[0]).Checked = o[i, j]; } } panel2.BackColor = o.Boja; prikazivanje_u_tijeku = false; }
void render(Panel pan, Oblik o, Brush p) { Bitmap bm = new Bitmap(bit_sljedeci); Graphics g = Graphics.FromImage(bm); int w = (pan.Width) / (4); int h = (pan.Height) / (4); if (o != null) { for (int r = 0; r < 4; ++r) { for (int s = 0; s < 4; ++s) { if (o[r, s]) { g.FillRectangle(p, new Rectangle(new Point((s * w) + 1, (r * h) + 1), new Size(w - 3, h - 3))); g.DrawImage(img, new Point(s * w, r * h)); } } } } pan.BackgroundImage = bm; }
public Oblik SljedeciOblik() { Oblik odabrani = Nivo().sljedeciOblik(); return(Oblik.copy(odabrani)); }
private bool inicijaliziraj(Kvadrat kojiLik) { bool prvi = kojiLik == Kvadrat.OkupiraPrviLik; bool viseLikova = Nivo().ViseLikova; urediLikove(kojiLik); Oblik aktivni = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi; int shift = 0; if (viseLikova && kojiLik == Kvadrat.OkupiraPrviLik) { shift = 2; } if (viseLikova && kojiLik == Kvadrat.OkupiraDrugiLik) { shift = -2; } switch (Nivo().Smjer) { case Smjerovi.Dolje: for (int i = 1, k = 0; i < 5; ++i, ++k) { for (int j = tip_igre.Stupaca / 2 - 2 + shift, l = 0; j < tip_igre.Stupaca / 2 + 2 + shift; ++j, ++l) { if (ploca[i, j] != Kvadrat.Slobodan) { return(false); } ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j]; } } aktivni.Pozicija = new Tuple <int, int>(1, tip_igre.Stupaca / 2 - 2 + shift); break; case Smjerovi.Gore: for (int i = tip_igre.Redaka - 3, k = 0; i < tip_igre.Redaka + 1; ++i, ++k) { for (int j = tip_igre.Stupaca / 2 - 2 + shift, l = 0; j < tip_igre.Stupaca / 2 + 2 + shift; ++j, ++l) { if (ploca[i, j] != Kvadrat.Slobodan) { return(false); } ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j]; } } aktivni.Pozicija = new Tuple <int, int>(tip_igre.Redaka - 3, tip_igre.Stupaca / 2 - 2 + shift); break; case Smjerovi.Desno: for (int i = tip_igre.Redaka / 2 - 2 + shift, k = 0; i < tip_igre.Redaka / 2 + 2 + shift; ++i, ++k) { for (int j = 1, l = 0; j < 5; ++j, ++l) { if (ploca[i, j] != Kvadrat.Slobodan) { return(false); } ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j]; } } aktivni.Pozicija = new Tuple <int, int>(tip_igre.Redaka / 2 - 2 + shift, 1); break; case Smjerovi.Lijevo: default: for (int i = tip_igre.Redaka / 2 - 2 + shift, k = 0; i < tip_igre.Redaka / 2 + 2 + shift; ++i, ++k) { for (int j = tip_igre.Stupaca - 3, l = 0; j < tip_igre.Stupaca + 1; ++j, ++l) { if (ploca[i, j] != Kvadrat.Slobodan) { return(false); } ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j]; } } aktivni.Pozicija = new Tuple <int, int>(tip_igre.Redaka / 2 - 2 + shift, tip_igre.Stupaca - 3); break; } if (kojiLik == Kvadrat.OkupiraPrviLik) { aktivniOblikPrvi = aktivni; } else { aktivniOblikDrugi = aktivni; } return(true); }
public static Oblik NapraviOblik(XElement x) { Oblik o = new Oblik(); o.FromXML(x); return o; }
public static Oblik copy(Oblik o) { return(new Oblik(o.Ime, o.Celije, o.Boja)); }
void render(Panel pan, Oblik o, Brush p) { Bitmap bm = new Bitmap(bit_sljedeci); Graphics g = Graphics.FromImage(bm); int w = (pan.Width) / (4); int h = (pan.Height) / (4); if (o != null) for (int r = 0; r < 4; ++r) { for (int s = 0; s < 4; ++s) { if (o[r, s]) { g.FillRectangle(p, new Rectangle(new Point((s * w)+1, (r * h)+1), new Size(w - 3, h - 3))); g.DrawImage(img, new Point(s * w, r * h)); } } } pan.BackgroundImage = bm; }
public static Oblik copy(Oblik o) { return new Oblik(o.Ime, o.Celije, o.Boja); }