コード例 #1
0
    /// <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;
    }
コード例 #2
0
ファイル: TW.cs プロジェクト: Ethief/towerdefense
    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);
    }
コード例 #3
0
    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;
    }
コード例 #4
0
    /// <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);
    }
コード例 #5
0
    /// <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);
    }
コード例 #6
0
    /// <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;
    }
コード例 #7
0
ファイル: Karkkimaa.cs プロジェクト: eissups/ohj1harjoitustyo
    /// <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;
        }
    }
コード例 #8
0
    /// <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;
    }
コード例 #9
0
        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();
            });
        }
コード例 #10
0
ファイル: Endless.cs プロジェクト: Ky1e/endless-rpg
    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)
            {

            }
        };
    }