// Menuvanje na nasokata na zmijata // Vrsi proverka za da ne dozvoli zmijata // da se dvizi nanazad public void PromeniNasoka(NASOKA nova) { Point Glava = TeloZmija.ElementAt(0); Point DoGlava = TeloZmija.ElementAt(1); if ((Glava.X == DoGlava.X && (nova == NASOKA.GORE || nova == NASOKA.DOLU)) || (Glava.Y == DoGlava.Y && (nova == NASOKA.LEVO || nova == NASOKA.DESNO))) { return; } Nasoka = nova; }
// Dokolku zmijata sama se izedi sebesi ke vrati true // vo sprotiven slucaj false public bool SamoUnistuvanje() { Point pomosna = TeloZmija.First(); for (int i = 1; i < TeloZmija.Count; i++) { if (TeloZmija.ElementAt(i).X == pomosna.X && TeloZmija.ElementAt(i).Y == pomosna.Y) { return(true); } } return(false); }
public void Crtanje(Graphics g, int sirina, int visina) { g.Clear(Color.White); for (int i = 1; i < TeloZmija.Count - 1; i++) { bool pomosna = false; if (TeloZmija.ElementAt(i - 1).X == TeloZmija.ElementAt(i + 1).X) { g.FillEllipse(Cetka, TeloZmija.ElementAt(i).X *StranaKvadrat + CetStr, TeloZmija.ElementAt(i).Y *StranaKvadrat, PolStr, StranaKvadrat); } else if (TeloZmija.ElementAt(i - 1).Y == TeloZmija.ElementAt(i + 1).Y) { g.FillEllipse(Cetka, TeloZmija.ElementAt(i).X *StranaKvadrat, TeloZmija.ElementAt(i).Y *StranaKvadrat + CetStr, StranaKvadrat, PolStr); } else { g.TranslateTransform(PolStr + TeloZmija.ElementAt(i).X *StranaKvadrat, StranaKvadrat * TeloZmija.ElementAt(i).Y); if (TeloZmija.ElementAt(i - 1).X > TeloZmija.ElementAt(i + 1).X&& TeloZmija.ElementAt(i - 1).Y > TeloZmija.ElementAt(i + 1).Y || TeloZmija.ElementAt(i + 1).X > TeloZmija.ElementAt(i - 1).X&& TeloZmija.ElementAt(i + 1).Y > TeloZmija.ElementAt(i - 1).Y) { g.RotateTransform(-45); if (TeloZmija.ElementAt(i + 1).X == TeloZmija.ElementAt(i).X&& TeloZmija.ElementAt(i + 1).Y < TeloZmija.ElementAt(i).Y || TeloZmija.ElementAt(i - 1).X == TeloZmija.ElementAt(i).X&& TeloZmija.ElementAt(i - 1).Y < TeloZmija.ElementAt(i).Y ) { // gore desno g.FillEllipse(Cetka, -CetStr, 0, PolStr, Dijagonala); } else { // dolu levo g.FillEllipse(Cetka, -(StranaKvadrat), 0, PolStr, Dijagonala); } g.RotateTransform(45); } else { g.RotateTransform(+45); if (TeloZmija.ElementAt(i + 1).X == TeloZmija.ElementAt(i).X&& TeloZmija.ElementAt(i + 1).Y < TeloZmija.ElementAt(i).Y || TeloZmija.ElementAt(i - 1).X == TeloZmija.ElementAt(i).X&& TeloZmija.ElementAt(i - 1).Y < TeloZmija.ElementAt(i).Y) { // gore levo g.FillEllipse(Cetka, -CetStr, 0, PolStr, Dijagonala); } else { // dolu desno g.FillEllipse(Cetka, CetStr + CetStr, 0, PolStr, Dijagonala); } g.RotateTransform(-45); } /*if (pomosna) * g.RotateTransform(-45);*/ g.TranslateTransform(-PolStr - TeloZmija.ElementAt(i).X *StranaKvadrat, -StranaKvadrat * TeloZmija.ElementAt(i).Y); } } // iscrtuvanje na zmijata /*foreach (Point item in TeloZmija) * { * g.FillRectangle(Cetka, item.X * StranaKvadrat, item.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); * g.DrawRectangle(Penkalo, item.X * StranaKvadrat, item.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); * }*/ // iscrtuvanje na glavata //SolidBrush pom = new SolidBrush(Color.Black); //Point pomosnaTocka = TeloZmija.First(); //g.FillRectangle(pom, pomosnaTocka.X * StranaKvadrat, pomosnaTocka.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); //g.DrawRectangle(Penkalo, pomosnaTocka.X * StranaKvadrat, pomosnaTocka.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); if (TeloZmija.ElementAt(0).Y == TeloZmija.ElementAt(1).Y) { if (Nasoka == NASOKA.LEVO) { g.FillPie(Cetka, TeloZmija.ElementAt(0).X *StranaKvadrat, TeloZmija.ElementAt(0).Y *StranaKvadrat + CetStr, StranaKvadrat, PolStr, 225, 270); } else { g.FillPie(Cetka, TeloZmija.ElementAt(0).X *StranaKvadrat, TeloZmija.ElementAt(0).Y *StranaKvadrat + CetStr, StranaKvadrat, PolStr, 45, 270); } } else { if (Nasoka == NASOKA.GORE) { g.FillPie(Cetka, TeloZmija.ElementAt(0).X *StranaKvadrat + CetStr, TeloZmija.ElementAt(0).Y *StranaKvadrat, PolStr, StranaKvadrat, 315, 270); } else { g.FillPie(Cetka, TeloZmija.ElementAt(0).X *StranaKvadrat + CetStr, TeloZmija.ElementAt(0).Y *StranaKvadrat, PolStr, StranaKvadrat, 135, 270); } //g.FillEllipse(Cetka, TeloZmija.ElementAt(0).X * StranaKvadrat + CetStr, TeloZmija.ElementAt(0).Y * StranaKvadrat, PolStr, StranaKvadrat); } // opaska int size = TeloZmija.Count; if (TeloZmija.ElementAt(size - 1).Y == TeloZmija.ElementAt(size - 2).Y) { g.FillEllipse(Cetka, TeloZmija.ElementAt(size - 1).X *StranaKvadrat, TeloZmija.ElementAt(size - 1).Y *StranaKvadrat + CetStr, StranaKvadrat, PolStr); } else { g.FillEllipse(Cetka, TeloZmija.ElementAt(size - 1).X *StranaKvadrat + CetStr, TeloZmija.ElementAt(size - 1).Y *StranaKvadrat, PolStr, StranaKvadrat); } // iscrtuvanje na hranata g.FillRectangle(Cetka, Hrana.X * StranaKvadrat, Hrana.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); g.DrawRectangle(Penkalo, Hrana.X * StranaKvadrat, Hrana.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); }