예제 #1
0
        }  //Sonde_Loop

        void Meteorite_Loop(TimeSpan elapsed)
        {
            bool DodajMeteor = false;

            if (Meteoriti.Count == 0)
            {
                DodajMeteor = true;
            }

            int dm = 550 - brojMeteora / 5;

            if (dm < 350)
            {
                dm = 350;
            }
            int slb = GetRandInt(1, dm);

            if (slb < 25)
            {
                DodajMeteor = true;
            }

            if (DodajMeteor)
            {
                brojMeteora++;
                if (brojMeteora % 10 == 0)
                {
                    amunicija++;
                }
                Meteorite noviMeteor;
                int       slb1, velicina;
                slb      = GetRandInt(1, 5);
                velicina = GetRandInt(1, 5);

                int dodajBrzinu = 100 + brojMeteora * 2;
                if (dodajBrzinu > 400)
                {
                    dodajBrzinu = 400;
                }

                switch (slb)
                {
                case 1:                        //meteor dolazi s slijeva
                    slb1 = GetRandInt(0, 600); //početak putanje
                    if (velicina != 1)
                    {
                        noviMeteor = new Meteorite(50, 50, new Point(5, slb1), GetRandInt(100, dodajBrzinu), GetRandInt(30, 150));
                    }
                    else
                    {
                        noviMeteor = new Meteorite(25, 25, new Point(5, slb1), GetRandInt(100, dodajBrzinu), GetRandInt(30, 150));
                    }
                    noviMeteor.MinY     = 5;
                    noviMeteor.MinX     = 5;
                    noviMeteor.MaxX     = gameRoot.Width - 5;
                    noviMeteor.MaxY     = gameRoot.Height - 5;
                    noviMeteor.Velocity = Vector.CreateVectorFromAngle(noviMeteor.kut, noviMeteor.brzina);
                    Meteoriti.Add(noviMeteor);
                    gameRoot.Children.Add(noviMeteor.SpriteCanvas);
                    break;

                case 2:                        //sdesna
                    slb1 = GetRandInt(0, 595); //početak putanje
                    if (velicina != 1)
                    {
                        noviMeteor = new Meteorite(50, 50, new Point(gameRoot.Width - 5, slb1), GetRandInt(100, dodajBrzinu), GetRandInt(210, 330));
                    }
                    else
                    {
                        noviMeteor = new Meteorite(25, 20, new Point(gameRoot.Width - 5, slb1), GetRandInt(100, dodajBrzinu), GetRandInt(210, 330));
                    }
                    noviMeteor.MinY     = 5;
                    noviMeteor.MinX     = 5;
                    noviMeteor.MaxX     = gameRoot.Width - 5;
                    noviMeteor.MaxY     = gameRoot.Height - 5;
                    noviMeteor.Velocity = Vector.CreateVectorFromAngle(noviMeteor.kut, noviMeteor.brzina);
                    Meteoriti.Add(noviMeteor);
                    gameRoot.Children.Add(noviMeteor.SpriteCanvas);
                    break;

                case 3:                        //od gore
                    slb1 = GetRandInt(0, 745); //početak putanje
                    if (velicina != 1)
                    {
                        noviMeteor = new Meteorite(50, 50, new Point(slb1, 5), GetRandInt(100, dodajBrzinu), GetRandInt(120, 150));
                    }
                    else
                    {
                        noviMeteor = new Meteorite(20, 20, new Point(slb1, 5), GetRandInt(100, dodajBrzinu), GetRandInt(120, 150));
                    }
                    noviMeteor.MinY     = 5;
                    noviMeteor.MinX     = 5;
                    noviMeteor.MaxX     = gameRoot.Width - 5;
                    noviMeteor.MaxY     = gameRoot.Height - 5;
                    noviMeteor.Velocity = Vector.CreateVectorFromAngle(noviMeteor.kut, noviMeteor.brzina);
                    Meteoriti.Add(noviMeteor);
                    gameRoot.Children.Add(noviMeteor.SpriteCanvas);
                    break;

                case 4:                        //od dolje
                    slb1 = GetRandInt(0, 745); //početak putanje
                    if (velicina != 1)
                    {
                        noviMeteor = new Meteorite(50, 50, new Point(slb1, gameRoot.Height - 5), GetRandInt(100, dodajBrzinu), GetRandInt(300, 420));
                    }
                    noviMeteor      = new Meteorite(25, 25, new Point(slb1, gameRoot.Height - 5), GetRandInt(100, dodajBrzinu), GetRandInt(300, 420));
                    noviMeteor.MinY = 5;
                    noviMeteor.MinX = 5;
                    noviMeteor.MaxX = gameRoot.Width - 5;
                    noviMeteor.MaxY = gameRoot.Height - 5;
                    if (noviMeteor.kut > 360)
                    {
                        noviMeteor.kut -= 360;
                    }
                    noviMeteor.Velocity = Vector.CreateVectorFromAngle(noviMeteor.kut, noviMeteor.brzina);
                    Meteoriti.Add(noviMeteor);
                    gameRoot.Children.Add(noviMeteor.SpriteCanvas);
                    break;
                } //switch(slb)
            }     //if(DodajMeteor)

            foreach (Meteorite meteorit in Meteoriti)
            {
                if (Sprite.Collides(PlayerShip, meteorit))
                {
                    int ukupnaSteta = (meteorit.brzina / 2 + PlayerShip.brzina) / 10;
                    if (meteorit.Width < 50)
                    {
                        ukupnaSteta /= 2;
                    }

                    if (stanjeStita > 0)
                    {
                        stanjeStita -= ukupnaSteta;
                    }
                    else
                    {
                        udarci++;
                        zdravlje -= ukupnaSteta;
                    }

                    eksplozija explosion = meteorit.unisten();
                    Eksplozije.Add(explosion);
                    Eksplozija_Zvuk(1);
                    gameRoot.Children.Add(explosion.SpriteCanvas);
                    MeteoritiRemove.Add(meteorit);

                    if (zdravlje <= 0)
                    {
                        GameOver();
                        return;
                    }
                }

                RotateTransform rotacija = new RotateTransform();
                double          rot      = meteorit.rotacija + 1.5;
                if (rot >= 360)
                {
                    meteorit.rotacija -= 360;
                }
                meteorit.rotacija = rot;
                rotacija.Angle    = meteorit.rotacija;
                rotacija.CenterX  = meteorit.CentarX;
                rotacija.CenterY  = meteorit.CentarY;
                meteorit.SpriteCanvas.RenderTransform = rotacija;
                meteorit.Update(elapsed);

                if (meteorit.checkLocation())
                {
                    MeteoritiRemove.Add(meteorit);
                }
            }  //foreach(Meteorite meteorit in Meteoriti)

            foreach (Meteorite meteorit in MeteoritiRemove)
            {
                Meteoriti.Remove(meteorit);
                gameRoot.Children.Remove(meteorit.SpriteCanvas);
            }
            MeteoritiRemove.Clear();
        }  //Meteorite_Loop
예제 #2
0
        }  //ExplosionLoop

        void Torpedo_Loop(TimeSpan elapsed)
        {
            foreach (Torpedo pucanj in Torpedi)
            {
                pucanj.Update(elapsed);
                if (pucanj.checkLocation())
                {
                    TorpediRemove.Add(pucanj);
                }

                foreach (Meteorite meteor in Meteoriti)
                {
                    if (Sprite.Collides(pucanj, meteor))
                    {
                        TorpediRemove.Add(pucanj);
                        eksplozija explosion = meteor.unisten();
                        Eksplozije.Add(explosion);
                        gameRoot.Children.Add(explosion.SpriteCanvas);
                        Eksplozija_Zvuk(0.75);

                        if (meteor.Width > 25)  //ako je meteor veći, podjeliti ćemo ga u dva manja
                        {
                            Meteorite noviMeteor1, noviMeteor2;
                            noviMeteor1      = new Meteorite(25, 25, meteor.Position, meteor.brzina * 2, pucanj.kut - 60);
                            noviMeteor1.MinY = 0;
                            noviMeteor1.MinX = 0;
                            noviMeteor1.MaxX = gameRoot.Width;
                            noviMeteor1.MaxY = gameRoot.Height;
                            if (noviMeteor1.kut < 0)
                            {
                                noviMeteor1.kut += 360;
                            }
                            noviMeteor1.Velocity = Vector.CreateVectorFromAngle(noviMeteor1.kut, noviMeteor1.brzina);
                            Meteoriti.Add(noviMeteor1);
                            gameRoot.Children.Add(noviMeteor1.SpriteCanvas);

                            noviMeteor2      = new Meteorite(25, 25, meteor.Position, meteor.brzina * 2, pucanj.kut + 60);
                            noviMeteor2.MinY = 0;
                            noviMeteor2.MinX = 0;
                            noviMeteor2.MaxX = gameRoot.Width;
                            noviMeteor2.MaxY = gameRoot.Height;
                            if (noviMeteor2.kut > 360)
                            {
                                noviMeteor2.kut -= 360;
                            }
                            noviMeteor2.Velocity = Vector.CreateVectorFromAngle(noviMeteor2.kut, noviMeteor2.brzina);
                            Meteoriti.Add(noviMeteor2);
                            gameRoot.Children.Add(noviMeteor2.SpriteCanvas);
                        }
                        zdravlje += meteor.brzina / 25;

                        MeteoritiRemove.Add(meteor);
                        unisteniMeteoriti++;
                        break;
                    } //if(Sprite.Collides(pucanj, meteor))
                }     //foreach(Meteorite meteor in Meteoriti)

                foreach (Sonda sonda in Sonde)
                {
                    if (Sprite.Collides(pucanj, sonda))
                    {
                        TorpediRemove.Add(pucanj);
                        eksplozija explosion = sonda.unistena();
                        Eksplozije.Add(explosion);
                        gameRoot.Children.Add(explosion.SpriteCanvas);
                        SondeRemove.Add(sonda);
                        Eksplozija_Zvuk(0.75);
                        break;
                    }
                }

                foreach (Grumen grumen in Grumenje)
                {
                    if (Sprite.Collides(pucanj, grumen))
                    {
                        TorpediRemove.Add(pucanj);
                        eksplozija explosion = grumen.unisten();
                        Eksplozije.Add(explosion);
                        gameRoot.Children.Add(explosion.SpriteCanvas);
                        GrumenjeRemove.Add(grumen);
                        Eksplozija_Zvuk(0.75);
                        break;
                    }
                }
            }  //foreach(Torpedo pucanj in Torpedi)

            foreach (Torpedo pucanj in TorpediRemove)
            {
                Torpedi.Remove(pucanj);
                gameRoot.Children.Remove(pucanj.SpriteCanvas);
            }
            TorpediRemove.Clear();
        }  //torpedo_Loop