コード例 #1
0
ファイル: Snake.cs プロジェクト: champion812r/Zmijica
        private void NapraviNovuHranu(ref List <Point> hrana, int foodMax, List <Point> zmija, ref List <Instrukcija> Lista)
        {
            Random r    = new Random();
            Point  food = new Point {
                X = r.Next(0, sirinaMatrice + 1), Y = r.Next(0, visinaMatrice + 1)
            };
            Instrukcija instrukcija = new Instrukcija();

            for (int i = hrana.Count; i < foodMax; i++)
            {
                while (hrana.Contains(food) || zmija.Contains(food)) //trazi se random lokacija na kojoj nema ni zmije ni hrane
                {
                    food = new Point {
                        X = r.Next(0, sirinaMatrice + 1), Y = r.Next(0, visinaMatrice + 1)
                    }
                }
                ;
                hrana.Add(food); //kada se nadje doda se u listu

                //dodavanje instrukcije u listu
                instrukcija.xy   = hrana[i];
                instrukcija.oboj = true;
                instrukcija.telo = false;
                Lista.Add(instrukcija);
            }
        }
コード例 #2
0
ファイル: Snake.cs プロジェクト: champion812r/Zmijica
        //promene u listi zmijice i desavanja u zavisnosti od njene pozicije, kreiranje instrukcija
        private void ZmijaUpdate(ref List <Point> teloZmije, Point glava, ref List <Instrukcija> Lista, int interval)
        {
            Instrukcija instrukcija = new Instrukcija();

            //da li se sudara (sudara se ako je lokacija glave jednaka sa nekim delom tela zmijice)
            if (teloZmije.Contains(glava))
            {
                //kreiranje instrukcije
                glava.X        = -1;    //nepostojeca lokacija kao znak za kraj igrice
                instrukcija.xy = glava;
                Lista.Add(instrukcija); //dodaje se u listu instrukcija
                KrajIgrice();
            }
            //ako se ne sudara
            else
            {
                //glava se uvek dodaje
                teloZmije.Insert(0, glava);

                //pravi se instrukcija za bojenje lokacije na kojoj je glava
                instrukcija.xy   = glava;
                instrukcija.oboj = true;
                instrukcija.telo = true;
                Lista.Add(instrukcija); //dodaje se u listu instrukcija

                //provera da li glava ima isti lokaciju kao neki clan iz liste hrana
                for (int i = 0; i < hrana.Count; i++)
                {
                    if (hrana[i] == glava)                                          //ako postoji takav clan
                    {
                        currentScore    += (int)Math.Pow(2, (400 - interval) / 50); //score se povecava
                        pokupljeno       = true;
                        instrukcija.xy   = hrana[i];
                        instrukcija.oboj = false;
                        instrukcija.telo = false;
                        Lista.Add(instrukcija);
                        hrana.RemoveAt(i); //hrana se uklanja iz liste
                        hranaZvuk.Play();
                        break;
                    }
                    else
                    {
                        pokupljeno = false;  //ako ne postoji
                    }
                }

                //rep se brise kada se ne pokupi hrana, ili ako nema hrane, a bool je ostao true
                if (!pokupljeno || hrana.Count == 0)
                {
                    //pravljenje istrukcije za brisanje repa
                    instrukcija.xy   = teloZmije[teloZmije.Count - 1]; //rep je uvek poslednji clan liste
                    instrukcija.oboj = false;
                    instrukcija.telo = true;
                    Lista.Add(instrukcija);                  //dodaje se u listu instrukcija
                    teloZmije.RemoveAt(teloZmije.Count - 1); //uklanja se iz liste delova tela zmijice
                }

                //nasumicno generisanje hrane po frame-u
                Random r = new Random();
                if (r.Next(0, 5) == 1)
                {
                    NapraviNovuHranu(ref hrana, r.Next(1, foodMax + 1), teloZmije, ref Lista);
                }
            }
        }