} //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
} //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