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) { } }; }