/// <summary> /// Luodaan urhealle sankarillemme vihollisia /// </summary> /// <param name="paikka">Vihollisen sijainti</param> /// <param name="leveys">Vihollisen koko</param> /// <param name="korkeus">Vihollisen koko</param> /// <param name="liikemaara">Vihollisen liikkumasäde</param> public void LuoVihu(Vector paikka, double leveys, double korkeus, int liikemaara) { PhysicsObject vihu = new PhysicsObject(leveys, korkeus); vihu.Position = paikka; vihu.CanRotate = false; vihu.Image = VihunSkini(); Add(vihu); PathFollowerBrain pfb = new PathFollowerBrain(); List <Vector> reitti = new List <Vector>(); reitti.Add(vihu.Position); Vector seuraavaPiste = new Vector(vihu.X - liikemaara * RUUDUN_LEVEYS, vihu.Y); reitti.Add(seuraavaPiste); pfb.Path = reitti; AddCollisionHandler(vihu, "pelaajanKivi", CollisionHandler.ExplodeBoth(50, true)); Timer heittoAjastin = new Timer(); Random rnd = new Random(); heittoAjastin.Interval = rnd.Next(2, 8); heittoAjastin.Timeout += delegate() { Heita(vihu, "vihunKivi", -1000); }; heittoAjastin.Start(); vihu.Destroyed += delegate { heittoAjastin.Stop(); pisteet.Value += 1; }; vihu.Brain = pfb; pfb.Loop = true; }
void luovihollinen() { GameObject vihollinen = new GameObject(50, 50); vihollislistatykeille.Add(vihollinen); vihollinen.Position = new Vector(-400, 350); List <Vector> polku = new List <Vector>() { new Vector(-50, 150), new Vector(-280, 1 - 80), new Vector(-130, -100), new Vector(53, 100), new Vector(0, 290), new Vector(-70, 290), new Vector(0, 330), new Vector(220, 330), new Vector(210, -110), new Vector(-150, -335), new Vector(300, -335) }; PathFollowerBrain aivot = new PathFollowerBrain(2, polku); vihollinen.Brain = aivot; aivot.Active = true; //PiirraReittipisteet(polku); vihollinen.Image = LoadImage("VihollisenKuva"); vihollinen.Shape = Shape.Circle; Add(vihollinen); }
void LuoSusi(double kestavyys) { Vihu susi = new Vihu(100, 100); susi.Image = Sudenkuvat[0]; Animation animaatio = new Animation(Sudenkuvat); animaatio.FPS = 4; susi.Animation = animaatio; susi.Position = pisteet[0]; susi.Animation.Start(); susi.CollisionIgnoreGroup = 1; susi.CanRotate = false; susi.Tag = "susi"; susi.MuutaElamamaara(kestavyys); Add(susi); Timer sudenkaanto = new Timer(); sudenkaanto.Interval = 0.1; sudenkaanto.Timeout += delegate { KaannaSusi(susi); }; sudenkaanto.Start(); PathFollowerBrain Aivo = new PathFollowerBrain(); Aivo.Path = pisteet; Aivo.Speed = 100; Aivo.ArrivedAtEnd += delegate { elämät.Value--; susi.Destroy(); }; susi.Brain = Aivo; }
/// <summary> /// Luo zombin /// </summary> /// <param name="x">zombin x-koordinaatit</param> /// <param name="y">zombin y-koordinaatit</param> /// <returns></returns> Zombi LuoZombi(double x, double y, List <Vector> polku) { Zombi zombi = new Zombi(25.0, 25.0, new Color[] { Color.Green, Color.Red }); zombi.Shape = Shape.Circle; zombi.X = x; zombi.Y = y; zombi.Restitution = 0.0; zombi.Tag = "zombi"; zombi.Image = LoadImage("zombi"); zombi.CanRotate = false; zombiLaskuri.Value += 1; Add(zombi, 1); PathFollowerBrain polkuAivo = new PathFollowerBrain(50); polkuAivo.Path = polku; FollowerBrain seuraajaAivo = new FollowerBrain(pelaaja); seuraajaAivo.Speed = 100; seuraajaAivo.DistanceFar = 400; seuraajaAivo.DistanceClose = 50; seuraajaAivo.FarBrain = polkuAivo; seuraajaAivo.StopWhenTargetClose = false; zombi.Brain = seuraajaAivo; return(zombi); }
/// <summary> /// Luodaan virus ja sille aivot. /// </summary> /// <returns></returns> public PhysicsObject PolkuaivoVirus() { Virus virus = new Virus(ruudunKorkeus / 2 + tappoLaskuri.Value / 5, ruudunLeveys / 2 + tappoLaskuri.Value / 5, 3 + tappoLaskuri.Value / 5); virus.Position = alku; virus.CollisionIgnoreGroup = 1; virus.IgnoresCollisionResponse = true; Image viruksenKuva = LoadImage("korona"); virus.Image = viruksenKuva; virus.Restitution = 1.0; virus.Tag = "virus"; virukset.Add(virus); Add(virus); PathFollowerBrain polkuAivot = new PathFollowerBrain(); polkuAivot.Path = polku; polkuAivot.Loop = false; polkuAivot.Speed = 150; virus.Brain = polkuAivot; polkuAivot.Active = true; AddCollisionHandler(virus, VirusTormasi); return(virus); }
/// <summary> /// Lisätään saaliit peliin /// </summary> /// <param name="paikka">paikka, johon saalis lisätään</param> /// <param name="leveys">saaliin leveys</param> /// <param name="korkeus">saaliin korkeus</param> /// <param name="liikuSivulle">paljonko saalis liikkuu sivulle</param> /// <param name="kuva">saaliin kuva</param> /// <param name="liikuYlos">paljonko saalis liikkuu ylös</param> public void LisaaSaalis(Vector paikka, double leveys, double korkeus, int liikuSivulle, Image kuva, int liikuYlos) { PhysicsObject saalis = new PhysicsObject(leveys, korkeus); saalis.Position = paikka; saalis.CanRotate = false; saalis.Image = kuva; saalis.Tag = "saalis"; Add(saalis); PathFollowerBrain ps = new PathFollowerBrain(); List <Vector> psReitti = new List <Vector>(); psReitti.Add(saalis.Position); Vector seuraavaPiste = new Vector(saalis.X + liikuSivulle * RUUDUN_LEVEYS, saalis.Y + liikuYlos * RUUDUN_LEVEYS); psReitti.Add(seuraavaPiste); ps.Path = psReitti; saalis.Brain = ps; ps.Loop = true; }
/// <summary> /// Luodaan peikkoja kentälle satunnaisiin paikkoihin /// </summary> private void LuoPeikko() { for (int i = 0; i < PEIKKOJENMAARA; i++) { double x = RandomGen.NextDouble(Level.Left, Level.Right); double y = RandomGen.NextDouble(Level.Bottom, Level.Top); PhysicsObject peikko = Olio(this, PEIKONLEVEYS, PEIKONKORKEUS, x, y, "peikko", true, true, false, 0, "peikko", Color.Transparent, Shape.Rectangle, true); Add(peikko); //Tehdään ´peikolle polkuaivot PathFollowerBrain peikonAivot = new PathFollowerBrain(200); peikko.Brain = peikonAivot; List <Vector> polku = new List <Vector>(); polku.Add(Vector.FromLengthAndAngle(RandomGen.NextDouble(Screen.Top * 2, Screen.Top * 3), RandomGen.NextAngle())); peikonAivot.Path = polku; peikonAivot.Loop = true; peikonAivot.Speed = 250; } }
/// <summary> /// Lisätään viholliset /// </summary> /// <param name="paikka">paikka, johon vihollinen lisätään</param> /// <param name="leveys">vihollisen leveys</param> /// <param name="korkeus">vihollisen korkeus</param> /// <param name="liikuSivulle">paljonko vihollinen liikkuu sivulle</param> /// <param name="kuva">vihollisen kuva</param> /// <param name="liikuYlos">paljonko vihollinen liikkuu ylös</param> public void LisaaVihollinen(Vector paikka, double leveys, double korkeus, int liikuSivulle, Image kuva, int liikuYlos) { PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus); vihollinen.Position = paikka; vihollinen.IgnoresCollisionResponse = true; vihollinen.CanRotate = false; vihollinen.Image = kuva; vihollinen.Tag = "vihollinen"; Add(vihollinen); PathFollowerBrain pl = new PathFollowerBrain(); List <Vector> plReitti = new List <Vector>(); plReitti.Add(vihollinen.Position); Vector seuraavaPiste = new Vector(vihollinen.X + liikuSivulle * RUUDUN_LEVEYS, vihollinen.Y + liikuYlos * RUUDUN_LEVEYS); plReitti.Add(seuraavaPiste); pl.Path = plReitti; vihollinen.Brain = pl; pl.Loop = true; }
public Enemy(EnemyTemplate enemyTemplate, int level, SortedList <char, Vector> route) : base(15, 15) { int health = enemyTemplate.BaseHealth * level; Health = new IntMeter(health, 0, health); Health.LowerLimit += Destroy; Image = GameManager.Images[enemyTemplate.Image]; Value = enemyTemplate.Value; Tag = "Enemy"; CanRotate = false; IgnoresCollisionResponse = true; PathFollowerBrain brain = new PathFollowerBrain(new List <Vector>(route.Values)); brain.Speed = enemyTemplate.Speed; Brain = brain; ProgressBar HealthBar = new ProgressBar(Width, 3, Health); HealthBar.BarColor = Color.DarkGreen; HealthBar.Color = Color.BloodRed; HealthBar.Bottom = Bottom - 5; Add(HealthBar); AddCollisionHandler <Ammo>("Ammo", AmmoHit); AddCollisionHandler <Target>("Target", delegate { Explosion explosion = new Explosion(50); explosion.Position = Position; //Add(explosion); // TODO: Sound is way too loud :( GameManager.Target.Health.Value -= 100; Destroy(); }); }
void LuoVihollinen(Vector paikka, double kokoX, double kokoY) { Enemy pahis1 = new Enemy(kokoX * 0.8, kokoY * 0.8, 3); //3. parametri on pahis1:n elämät pahis1.Position = paikka; pahis1.Tag = "pahis1"; pahis1.Image = pahiksenkuva; pahikset.Add(pahis1); Add(pahis1); FollowerBrain seuraaja = new FollowerBrain(pelaaja); seuraaja.Speed = 50; seuraaja.TurnWhileMoving = true; List<Vector> reitti = new List<Vector>(); //tekoälyn reitin pisteiden koordinaatit reitti.Add(new Vector(pahis1.X + 15, pahis1.Y)); //nämä ovat vain testejä JA NE TULEE VAIHTAA KUN PELIN TEKEMINEN EDISTYY reitti.Add(new Vector(pahis1.X + 15, pahis1.Y)); PathFollowerBrain odottaja = new PathFollowerBrain(); odottaja.ReverseReturn = true; odottaja.Loop = true; odottaja.Path = reitti; pahis1.Brain = odottaja; AddCollisionHandler(pahis1, PahikseenOsui); Timer ampumisajastin = new Timer(); // käytetään ampumisen ajastamiseen ampumisajastin.Interval = 3.0; ampumisajastin.Timeout += delegate { Vector suunta = pelaaja.Position - pahis1.Position; if (pahis1.IsDestroyed == false && pahis1.IsAddedToGame == true && pahis1.SeesObject(pelaaja) && Math.Abs(pahis1.Angle.Radians - suunta.Angle.Radians) < Math.PI / 2 && pahis1.isPoisonend == false) // pitkä rivi jolla tarkastetaan näkeekö pahis1 pelaajaa { PhysicsObject ammus = new PhysicsObject(30, 10); ammus.Position = pahis1.Position; ammus.MaximumLifetime = TimeSpan.FromSeconds(2); ammus.Angle = pahis1.Angle; Add(ammus); ammus.Hit(Vector.FromLengthAndAngle(1000, pahis1.Angle)); } }; ampumisajastin.Start(); //reittihaku TestiPalikka testipalikka = new TestiPalikka(10, 10); testipalikka.Mass = 0; testipalikka.Position = pahis1.Position; testipalikka.MaximumLifetime = TimeSpan.FromSeconds(2.0); AddCollisionHandler(testipalikka, TestiTormays); Timer testiajastin = new Timer(); // käytetään kulman laskemiseen tietyn ajan välein testiajastin.Interval = 2.0; testiajastin.Timeout += delegate { Angle satkulma = RandomGen.NextAngle(); Add(testipalikka); Vector hitvektori = Vector.FromLengthAndAngle(500,satkulma); MessageDisplay.Add("Testipalikka hit : " + satkulma); testipalikka.Hit(hitvektori); }; Timer tarkastin = new Timer(); tarkastin.Interval = 2.1; tarkastin.Timeout += delegate { if (testipalikka.Tormasi == false) { } }; }