예제 #1
0
        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);
            }
        }
예제 #2
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;
        }
예제 #3
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);
        }
예제 #4
0
        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;
            }
        }
예제 #5
0
        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);
        }