Beispiel #1
0
    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)
            {

            }
        };
    }