Exemple #1
0
        // 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;
        }
Exemple #2
0
        // 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);
        }