Пример #1
0
        public eksplozija unisten()
        {
            eksplozija explosion = new eksplozija(50, 50, Position, 0, 0);

            explosion.Velocity = Vector.CreateVectorFromAngle(0, 0);
            return(explosion);
        }
Пример #2
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
Пример #3
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
Пример #4
0
        }  //btnStart_Click

        /*funkcija koja vrti glavni dio programa*/
        void gameLoop_Update(TimeSpan elapsed)
        {
            if (torpedoCooldown > 0)
            {
                torpedoCooldown--;
            }
            if (pauseCooldown > 0)
            {
                pauseCooldown--;
            }

            /*detekcija korisnikova unosa*/
            if (status == GameState.pokrenuto)
            {
                PlayerShip.Velocity = new Vector(0, 0);
                if (keyHandler.IsKeyPressed(Key.Left) || keyHandler.IsKeyPressed(Key.A))
                {
                    if (PlayerShip.kut == 0)
                    {
                        PlayerShip.kut = 355;
                    }
                    else
                    {
                        PlayerShip.kut -= 5;
                    }
                }
                if (keyHandler.IsKeyPressed(Key.Right) || keyHandler.IsKeyPressed(Key.D))
                {
                    if (PlayerShip.kut == 355)
                    {
                        PlayerShip.kut = 0;
                    }
                    else
                    {
                        PlayerShip.kut += 5;
                    }
                }
                if ((keyHandler.IsKeyPressed(Key.Up) || keyHandler.IsKeyPressed(Key.W)) && PlayerShip.brzina < maxBrzina)
                {
                    PlayerShip.brzina += 5;
                }
                if ((keyHandler.IsKeyPressed(Key.Down) || keyHandler.IsKeyPressed(Key.S)) && PlayerShip.brzina > minBrzina)
                {
                    if (PlayerShip.brzina > minBrzina)
                    {
                        PlayerShip.brzina -= 5;
                    }
                }
                if ((keyHandler.IsKeyPressed(Key.Space) || keyHandler.IsKeyPressed(Key.NumPad0)) && amunicija > 0 && torpedoCooldown == 0)
                {
                    torpedoCooldown = 10;
                    Torpedo pucanj = PlayerShip.Fire();
                    pucanj.MinX = pucanj.MinY = 0;
                    pucanj.MaxX = gameRoot.Width;
                    pucanj.MaxY = gameRoot.Height;
                    Torpedi.Add(pucanj);
                    gameRoot.Children.Add(pucanj.SpriteCanvas);
                    Torpedo_Zvuk(0.5);

                    RotateTransform rotate = new RotateTransform();
                    rotate.Angle   = PlayerShip.kut;
                    rotate.CenterX = pucanj.CentarX;
                    rotate.CenterY = pucanj.CentarY;
                    pucanj.SpriteCanvas.RenderTransform = rotate;

                    amunicija--;
                }
                if ((keyHandler.IsKeyPressed(Key.Delete) || keyHandler.IsKeyPressed(Key.Y)) && pauseCooldown == 0)
                {
                    status = GameState.pauza;
                    gameRoot.Visibility = Visibility.Collapsed;
                    cnvInfo.Visibility  = Visibility.Visible;
                    pauseCooldown       = 10;

                    Style stil = gameRoot.Resources["btnStyle3"] as Style;
                    btnStart.Style = stil;
                    //Canvas.Left="269" Canvas.Top="446"
                    LayoutRoot.Children.Add(btnStart);
                }
                if ((keyHandler.IsKeyPressed(Key.NumPad2) || keyHandler.IsKeyPressed(Key.Ctrl)) && brojStitova > 0 && stanjeStita == 0)
                {
                    brojStitova--;
                    stanjeStita = 100;

                    Point pozicija = new Point();
                    pozicija = PlayerShip.Position;
                    int brzina = PlayerShip.brzina;
                    int kut    = PlayerShip.kut;
                    gameRoot.Children.Remove(PlayerShip.SpriteCanvas);
                    PlayerShip      = new Ship(30, 20, pozicija, brzina, kut, 1);
                    PlayerShip.MaxX = gameRoot.Width - 30;
                    PlayerShip.MaxY = gameRoot.Height - 30;
                    PlayerShip.MinX = 10;
                    PlayerShip.MinY = 10;
                    gameRoot.Children.Add(PlayerShip.SpriteCanvas);
                }
                if ((keyHandler.IsKeyPressed(Key.X) || keyHandler.IsKeyPressed(Key.Enter)) && amunicija >= 10 && torpedoCooldown == 0 && killZonePresent == 0)
                {
                    torpedoCooldown = 10;
                    amunicija      -= 10;
                    killzone        = new KillZone(300, 300, PlayerShip.Position, 0, 0);
                    killZonePresent = 200;
                    gameRoot.Children.Add(killzone.SpriteCanvas);
                    Torpedo_Zvuk(1);

                    foreach (Meteorite meteor in Meteoriti)
                    {
                        if (Sprite.Collides(killzone, meteor))
                        {
                            eksplozija explosion = meteor.unisten();
                            Eksplozije.Add(explosion);
                            gameRoot.Children.Add(explosion.SpriteCanvas);
                            MeteoritiRemove.Add(meteor);
                            unisteniMeteoriti++;

                            Eksplozija_Zvuk(0.3);
                        }
                    }

                    foreach (Sonda sonda in Sonde)
                    {
                        if (Sprite.Collides(killzone, sonda))
                        {
                            eksplozija explosion = sonda.unistena();
                            Eksplozije.Add(explosion);
                            gameRoot.Children.Add(explosion.SpriteCanvas);
                            SondeRemove.Add(sonda);

                            Eksplozija_Zvuk(0.3);
                        }
                    }

                    foreach (Grumen grumen in Grumenje)
                    {
                        if (Sprite.Collides(killzone, grumen))
                        {
                            eksplozija explosion = grumen.unisten();
                            Eksplozije.Add(explosion);
                            gameRoot.Children.Add(explosion.SpriteCanvas);
                            GrumenjeRemove.Add(grumen);

                            Eksplozija_Zvuk(0.3);
                        }
                    }
                }

                if (zdravlje < 100)
                {
                    zdravlje += 0.0001 * PlayerShip.brzina;
                }
                else
                {
                    zdravlje = 100;
                }

                if (stanjeStita > 0)
                {
                    stanjeStita -= 0.1;
                }
                else
                {
                    stanjeStita = 0;
                }

                if (stanjeStita == 0)
                {
                    Point pozicija = new Point();
                    pozicija = PlayerShip.Position;
                    gameRoot.Children.Remove(PlayerShip.SpriteCanvas);
                    int brzina = PlayerShip.brzina;
                    int kut    = PlayerShip.kut;
                    PlayerShip      = new Ship(30, 20, pozicija, brzina, kut, 0);
                    PlayerShip.MaxX = gameRoot.Width - 30;
                    PlayerShip.MaxY = gameRoot.Height - 30;
                    PlayerShip.MinX = 10;
                    PlayerShip.MinY = 10;
                    gameRoot.Children.Add(PlayerShip.SpriteCanvas);
                }

                RotateTransform rotacija = new RotateTransform();
                rotacija.Angle   = PlayerShip.kut;
                rotacija.CenterX = 16.5;
                rotacija.CenterY = 25;
                PlayerShip.SpriteCanvas.RenderTransform = rotacija;
                PlayerShip.Velocity = Vector.CreateVectorFromAngle(PlayerShip.kut, PlayerShip.brzina);
                PlayerShip.Update(elapsed);


                Meteorite_Loop(elapsed);
                Torpedo_Loop(elapsed);
                ExplosionLoop(elapsed);
                InformacijeLoop(elapsed);
                GrumenjeLoop(elapsed);
                Sonde_Loop(elapsed);
                if (killZonePresent > 0)
                {
                    KillZoneLoop(elapsed);
                }

                /*ažuriranje podataka na korisničkom sučelju*/
                MP.MeteoriScore      = brojMeteora;
                TA.TorpediAmunicija  = amunicija;
                UM.MeteoriUnisteni   = unisteniMeteoriti;
                zdravljeBroda.Health = zdravlje;
                KZ.Update(killZonePresent, amunicija);
                GS.Bodovi      = pokupljeniGrumeni;
                SS.BrojStitova = brojStitova;
                SS.StanjeStita = stanjeStita;
            }
            else
            {
                if ((keyHandler.IsKeyPressed(Key.Delete) || keyHandler.IsKeyPressed(Key.Y)) && pauseCooldown == 0)
                {
                    odpauziraj();
                }
            }
        }  //gameLoop_Update