public void Crtanje(Graphics g) { g.Clear(Color.White); // 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); // 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); if (Znamence) { SolidBrush BonusCetka = new SolidBrush(Color.Red); g.FillRectangle(BonusCetka, BonusHrana.X * StranaKvadrat, BonusHrana.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); g.DrawRectangle(Penkalo, BonusHrana.X * StranaKvadrat, BonusHrana.Y * StranaKvadrat, StranaKvadrat, StranaKvadrat); } }
// 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 Premesti(int sirina, int visina) { Point pomosna = TeloZmija.First(); // presmetaj ja slednata pozicija na glavata od zmijata // vo zavisnost od Nasoka switch (Nasoka) { case NASOKA.DESNO: if (pomosna.X + 1 >= sirina) { TeloZmija.AddFirst(new Point(0, pomosna.Y)); } else { TeloZmija.AddFirst(new Point(pomosna.X + 1, pomosna.Y)); } break; case NASOKA.LEVO: if (pomosna.X - 1 < 0) { TeloZmija.AddFirst(new Point(sirina - 1, pomosna.Y)); } else { TeloZmija.AddFirst(new Point(pomosna.X - 1, pomosna.Y)); } break; case NASOKA.DOLU: if (pomosna.Y + 1 >= visina) { TeloZmija.AddFirst(new Point(pomosna.X, 0)); } else { TeloZmija.AddFirst(new Point(pomosna.X, pomosna.Y + 1)); } break; case NASOKA.GORE: if (pomosna.Y - 1 < 0) { TeloZmija.AddFirst(new Point(pomosna.X, visina - 1)); } else { TeloZmija.AddFirst(new Point(pomosna.X, pomosna.Y - 1)); } break; } // Ako starata hrana e izedena presmetaj pozicija na nova // i ne ja otstranuvaj opaskata. // Dokolku starata hrana ne e izedena otstrani ja opaskata pomosna = TeloZmija.First(); if (pomosna.X == Hrana.X && pomosna.Y == Hrana.Y) { Hrana = NovaHrana(sirina, visina); Poeni += 3; if (TeloZmija.Count % 5 == 0) { Znamence = true; BonusHrana = NovaBonusHrana(sirina, visina); } } else { TeloZmija.RemoveLast(); } if (pomosna.X == BonusHrana.X && pomosna.Y == BonusHrana.Y) { //Hrana = NovaHrana(sirina, visina); Poeni += 10; Znamence = false; } }