Beispiel #1
0
    public void BountyHunter()
    {
        PlatformCharacter bountyhunter = new PlatformCharacter(100, 200);
        bountyhunter.Image = LoadImage("bountyhunter");
        bountyhunter.X = Level.Bottom + 800;
        bountyhunter.Y = Level.Left + 370;
        FollowerBrain vihuRandom = new FollowerBrain(ukko);

        vihuRandom.Speed = 300;
        vihuRandom.DistanceFar = 600;
        vihuRandom.DistanceClose = 200;
        vihuRandom.StopWhenTargetClose = true;
        bountyhunter.AnimWalk = new Animation(walkAnim);
        bountyhunter.AnimWalk.FPS = 6;
        bountyhunter.Brain = vihuRandom;
        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
        satunnaisAivot.ChangeMovementSeconds = 5;
        vihuRandom.FarBrain = satunnaisAivot;
        vihunase = new AssaultRifle(100, 50);
        vihunase.InfiniteAmmo = true;
        vihunase.FireRate = 0.5;
        bountyhunter.Weapon = vihunase;
        vihunase.X = +70;
        vihunase.Y = +10;
        vihunase.ProjectileCollision = AmmusOsui;
        bountyhunter.CollisionIgnoreGroup = 2;
        Add(bountyhunter, 1);
    }
        //public PhysicsObject LisaaOmaTorni()
        //{
        //    PhysicsObject torni = new PhysicsObject(100, 200);
        //    torni.Shape = Shape.Rectangle;
        //    Vector paikka = new Vector(100, 110);
        //    torni.Position = paikka;
        //    torni.Image = omaTorni;
        //    omatorni.CollisionIgnoreGroup = 1;
        //    Add(torni, 2);
        //    return torni;
        //}

        public Vaunu LisaaVihollinen()
        {
            Vaunu vihollinen = new Vaunu(100, 200, 1, 99);

            vihollinen.Shape = Shape.Rectangle;
            Random      randomY = new Random();
            Random      randomX = new Random();
            double      yluku   = randomY.NextDouble() * 9999;
            double      xluku   = randomX.NextDouble() * 1920;
            Vector      paikka  = new Vector(xluku, yluku);
            VihuKanuuna t55Ase  = new VihuKanuuna(0, 0);

            vihollinen.Position             = paikka;
            vihollinen.Image                = vihollisVaunu;
            vihollinen.CollisionIgnoreGroup = 2;
            vihollinen.Add(t55Ase);
            vihollinen.Tag = ("vihollinen");

            FollowerBrain vihuaivot = new FollowerBrain(pelaaja);

            vihollinen.Brain              = vihuaivot;
            vihuaivot.DistanceClose       = 500;
            vihuaivot.StopWhenTargetClose = true;
            vihuaivot.DistanceToTarget.AddTrigger(1000, TriggerDirection.Irrelevant, Huuda);
            Add(vihollinen);
            return(vihollinen);
        }
Beispiel #3
0
    public VihollinenSeuraajaKummitus(LegendOfPallo peli, double width, double height) : base(peli, 48, 44)
    {
        Score = 40;
        List <string> tagit = new List <string>()
        {
            "pelaaja"
        };

        Color = Color.OrangeRed;

        FollowerBrain aivot = new FollowerBrain();

        aivot.TagsToFollow = tagit;
        aivot.DistanceFar  = 896;
        aivot.Speed        = 90;

        Brain = aivot;

        IgnoresCollisionResponse = true;
        Animation     = new Animation(Animaatiot.GhostImages);
        Animation.FPS = 3;
        Animation.Start();
        Mass          = 0.3;
        Hp            = 5;
        LinearDamping = 0.7;

        LinearDamping = 0.7;
        CanRotate     = false;

        Tag = "immuuniLuodeille";
        Hp  = 5;
    }
    public VihollinenSeuraaja(LegendOfPallo peli, double width, double height) : base(peli, width, height)
    {
        Score = 60;
        List <string> tagit = new List <string>()
        {
            "pelaaja"
        };

        Color = Color.OrangeRed;

        aivot2                        = new LabyrinthWandererBrain(64);
        aivot2.Speed                  = 150.0;
        aivot2.LabyrinthWallTag       = "seina";
        aivot2.DirectionChangeTimeout = 2.0;

        aivot              = new FollowerBrain();
        aivot.DistanceFar  = 500;
        aivot.Speed        = 200.0;
        aivot.TagsToFollow = tagit;
        aivot.FarBrain     = aivot2;

        Mass          = 0.3;
        Brain         = aivot;
        CanRotate     = false;
        LinearDamping = 0.7;
        IsUpdated     = true;

        AsetaTiedot();

        KuolemaAjastin          = new Timer();
        KuolemaAjastin.Interval = 10;
        KuolemaAjastin.Timeout += HeraaEloon;
    }
Beispiel #5
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);
    }
Beispiel #6
0
    /// <summary>
    /// Aliohjelma "tuhoaa" pelaajan poistamalla tältä kontrollit, vaihtamalla tekstuurin ja asettamalla efektit.
    /// </summary>
    /// <param name="pelaaja">pelaaja</param>
    private void TuhoaPelaaja(PhysicsObject pelaaja)
    {
        pelaaja.IgnoresExplosions = true;
        if (pelaajaOnTuhoutunut == false)
        {
            Explosion rajahdys = new Explosion(50);
            rajahdys.Position = pelaaja.Position;
            Add(rajahdys);
            pelaajanTuhoutumiset++;
        }
        pelaajaOnTuhoutunut = true;
        pelaaja.Image       = pelaajanKuvaRikki;
        LopetaNappainkomennot();

        Smoke savu = new Smoke();

        savu.Position = pelaaja.Position;
        Add(savu, 3);
        savu.Tag = "savu";
        FollowerBrain aivo = new FollowerBrain(pelaaja);

        savu.Brain         = aivo;
        aivo.Speed         = 10;
        pelaaja.Destroyed += savu.Destroy;
        Timer.SingleShot(3, LuoTuhoteksti);
    }
Beispiel #7
0
    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
    {
        base.Update(gameTime);

        foreach (var pahis in pahikset)
        {
            Vector suunta = pelaaja.Position - pahis.Position;
            if (pahis.SeesObject(pelaaja) &&  Math.Abs( pahis.Angle.Radians - suunta.Angle.Radians) <Math.PI / 2 && pahis.isPoisonend == false)
            {
                FollowerBrain seuraaja = new FollowerBrain(pelaaja);
                seuraaja.Speed = 100;
                seuraaja.TurnWhileMoving = true;
                pahis.Brain = seuraaja;
            }
        }

        if (puhPutki == null || varsJousi == null) return;
        //if (varsJousi == null) return;

        if (varsJousi.IsAddedToGame == true)
        {
            varsJousi.Position = pelaaja.Position;
            varsJousi.Angle = pelaaja.Angle;
        }
        if (puhPutki.IsAddedToGame == true)
        {
            puhPutki.Position = pelaaja.Position;
            puhPutki.Angle = pelaaja.Angle;
        }
    }
    public VihollinenAmpuja(LegendOfPallo peli, double leveys, double korkeus) : base(peli, leveys, korkeus)
    {
        Score = 80;
        List <string> tagit = new List <string>()
        {
            "pelaaja"
        };

        Color = Color.MediumPurple;

        LabyrinthWandererBrain aivot2 = new LabyrinthWandererBrain(64);

        aivot2.Speed                  = 150.0;
        aivot2.LabyrinthWallTag       = "seina";
        aivot2.DirectionChangeTimeout = 2.0;

        aivot              = new FollowerBrain();
        aivot.DistanceFar  = 500;
        aivot.Speed        = 200.0;
        aivot.TagsToFollow = tagit;
        aivot.FarBrain     = aivot2;

        aivot.StopWhenTargetClose = true;
        aivot.DistanceClose       = 400;

        Mass          = 0.3;
        Hp            = 10;
        Brain         = aivot;
        CanRotate     = false;
        LinearDamping = 0.7;
        IsUpdated     = true;
        Tag           = "vihollinen";

        Animation     = new Animation(Animaatiot.DemonImages);
        Animation.FPS = 4;
        Animation.Start();

        kanuuna               = new Kanuuna <Ammus>(Peli, 10, 10);
        kanuuna.IsVisible     = false;
        kanuuna.AloitaTyhjana = false;
        kanuuna.AsetaKanuuna(0.2, 5.0, 3);
        kanuuna.Tag                      = "neutraali";
        kanuuna.AmpumisKohde             = null;
        kanuuna.MaxEtaisyysKohteeseen    = 500;
        kanuuna.IgnoresCollisionResponse = true;
        kanuuna.Position                 = new Vector(0, 0);
        kanuuna.ammus                   += Peli.AmmusKimpoileva1Malli;
        Add(kanuuna);

        Tavarat.LisaaTavara((int)TavaraTyypit.Raha, 1);
    }
Beispiel #9
0
        protected override PhysicsObject CreateProjectile()
        {
            Image          = Game.LoadImage("atgm");
            AttackSound    = Game.LoadSoundEffect("atgm");
            TimeBetweenUse = TimeSpan.FromSeconds(10);
            PhysicsObject missile = new PhysicsObject(new RaySegment(Vector.Zero, Vector.UnitX, 10));

            missile.Color = Color.Azure;
            FollowerBrain ohjuksenAivot = new FollowerBrain();

            AmmoIgnoresGravity = false;
            Power.DefaultValue = 100;
            Angle = Angle.FromDegrees(90);
            return(missile);
        }
Beispiel #10
0
 void LataaHirvio()
 {
     Hirvio = new PhysicsObject(90, 180);
     Hirvio.Image = LoadImage("Hirvio");
     Hirvio.CanRotate = false;
     Hirvio.Restitution = 0;
     Hirvio.X = 500;
     Hirvio.Y = 200;
     FollowerBrain seuraajanAivot = new FollowerBrain("joel5");
     seuraajanAivot.Speed = 300;
     seuraajanAivot.DistanceFar = 600;
     seuraajanAivot.DistanceClose = 200;
     Hirvio.Brain = seuraajanAivot;
     Add(Hirvio);
 }
Beispiel #11
0
 public void AntiAwesome()
 {
     Enemy = new PhysicsObject(128, 64);
     Enemy.Position = Level.GetRandomPosition() + new Vector(FlappyBird.Position.X+5000, 0);
     Timer.SingleShot(1.0, AntiAwesome);
     Enemy.Animation = new Animation(ukkelinKavely);
     Enemy.Animation.Start();
     Enemy.Animation.FPS = 6;
     Enemy.IgnoresGravity = true;
     FollowerBrain seuraajanAivot = new FollowerBrain(FlappyBird);
     seuraajanAivot.Active = true;
     seuraajanAivot.Speed = 200;
     seuraajanAivot.DistanceFar = 2000;
     Enemy.Brain = seuraajanAivot;
     Add(Enemy);
 }
Beispiel #12
0
        private void LuoPelaaja(Vector position, double width, double height)
        {
            PlatformCharacter hahmo = new PlatformCharacter(40, 80);

            hahmo.Position = position;
            Add(hahmo);

            AssaultRifle ase = new AssaultRifle(60, 15);

            hahmo.Weapon = ase;

            //PlatformCharacter apu = new PlatformCharacter( 20, 20, Shape.Circle );
            PhysicsObject apu   = new PhysicsObject(20, 20, Shape.Circle);
            FollowerBrain aivot = new FollowerBrain(hahmo);

            aivot.DistanceClose       = 80;
            aivot.StopWhenTargetClose = true;
            apu.Brain          = aivot;
            apu.IgnoresGravity = true;
            Add(apu);

            AddCollisionHandler(apu, "ammus", delegate(PhysicsObject a, PhysicsObject b) { a.Destroy(); b.Destroy(); });

            Label hahmonNimi = new Label(RandomGen.NextLetter(true).ToString() + RandomGen.NextLetter(false).ToString());

            hahmonNimi.Bottom = hahmo.Height;
            hahmo.Add(hahmonNimi);

            Keyboard.Listen(Key.Space, ButtonState.Down, delegate { var ammus = ase.Shoot(); if (ammus != null)
                                                                    {
                                                                        ammus.Tag = "ammus";
                                                                    }
                            }, null);
            Keyboard.Listen(Key.Right, ButtonState.Down, () => hahmo.Walk(200), null);
            Keyboard.Listen(Key.Left, ButtonState.Down, () => hahmo.Walk(-200), null);
            Keyboard.Listen(Key.Up, ButtonState.Down, () => hahmo.Jump(600), null);
            Keyboard.Listen(Key.Enter, ButtonState.Pressed, delegate { if (!apu.IsDestroyed)
                                                                       {
                                                                           MessageDisplay.Add("boop!");
                                                                       }
                            }, null);
        }
Beispiel #13
0
    public FollowerBrain Aivot2()
    {
        LabyrinthWandererBrain satunnaisAivot = new LabyrinthWandererBrain(40)
        {
            Speed            = RandomGen.NextDouble(80.0, 200.0),
            LabyrinthWallTag = "seina",
            TurnWhileMoving  = true
        };

        FollowerBrain lumikonAivotSeuraa = new FollowerBrain("myyra")
        {
            Speed               = RandomGen.NextInt(250, 350), // Millä nopeudella kohdetta seurataan
            DistanceFar         = RandomGen.NextInt(350, 550), // Etäisyys jolla aletaan seurata kohdetta
            DistanceClose       = 150,                         // Etäisyys jolloin ollaan lähellä kohdetta
            StopWhenTargetClose = false,                       // Pysähdytään kun ollaan lähellä kohdetta
            TurnWhileMoving     = true,
            FarBrain            = satunnaisAivot               // Käytetään satunnaisaivoja kun ollaan kaukana
        };

        return(lumikonAivotSeuraa);
    }
Beispiel #14
0
    public override void Begin()
    {
        damageKuvanAjastin.Interval = 0.05;
        luotiAjastin.Interval = 1;
        damageKuvanAjastin.Timeout += muutaVihollisenKuva;
        SmoothTextures = false;
        luoKentta();
        luoElamaLaskuri();
        Keyboard.Listen(Key.D, ButtonState.Down, liiku, "Liiku oikealle", pelaaja, oikealle);
        Keyboard.Listen(Key.A, ButtonState.Down, liiku, "Liiku vasemmalle", pelaaja, vasemmalle);
        Keyboard.Listen(Key.W, ButtonState.Down, liiku, "Liiku ylös", pelaaja, ylos);
        Keyboard.Listen(Key.S, ButtonState.Down, liiku, "Liiku alas", pelaaja, alas);
        Keyboard.Listen(Key.D, ButtonState.Released, pysahdy, "Liiku oikealle");
        Keyboard.Listen(Key.A, ButtonState.Released, pysahdy, "Liiku vasemmalle");
        Keyboard.Listen(Key.W, ButtonState.Released, pysahdy, "Liiku ylös");
        Keyboard.Listen(Key.S, ButtonState.Released, pysahdy, "Liiku alas");

        Keyboard.Listen(Key.Enter, ButtonState.Down, ammu, "Ammu", pelaajanAse);
        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");

        normalBullet1.X = 260;
        normalBullet2.X = 260;
        normalBullet3.X = 260;
        normalBullet4.X = 260;
        normalBullet5.X = 260;
        normalBullet6.X = 260;
        normalBullet7.X = 260;
        normalBullet8.X = 260;
        normalBullet9.X = 260;
        normalBullet10.X = 260;
        normalBullet11.X = 260;
        normalBullet12.X = 260;
        normalBullet13.X = 260;
        normalBullet14.X = 260;
        normalBullet15.X = 260;
        normalBullet16.X = 260;
        normalBullet1.Y = 1000;
        normalBullet2.Y = 1000;
        normalBullet3.Y = 1000;
        normalBullet4.Y = 1000;
        normalBullet5.Y = 1000;
        normalBullet6.Y = 1000;
        normalBullet7.Y = 1000;
        normalBullet8.Y = 1000;
        normalBullet9.Y = 1000;
        normalBullet10.Y = 1000;
        normalBullet11.Y = 1000;
        normalBullet12.Y = 1000;
        normalBullet13.Y = 1000;
        normalBullet14.Y = 1000;
        normalBullet15.Y = 1000;
        normalBullet16.Y = 1000;
        normalBullet1.Image = normalBulletKuva;
        normalBullet2.Image = normalBulletKuva;
        normalBullet3.Image = normalBulletKuva;
        normalBullet4.Image = normalBulletKuva;
        normalBullet5.Image = normalBulletKuva;
        normalBullet6.Image = normalBulletKuva;
        normalBullet7.Image = normalBulletKuva;
        normalBullet8.Image = normalBulletKuva;
        normalBullet9.Image = normalBulletKuva;
        normalBullet10.Image = normalBulletKuva;
        normalBullet11.Image = normalBulletKuva;
        normalBullet12.Image = normalBulletKuva;
        normalBullet13.Image = normalBulletKuva;
        normalBullet14.Image = normalBulletKuva;
        normalBullet15.Image = normalBulletKuva;
        normalBullet16.Image = normalBulletKuva;

        normalBullet1.Tag = "luoti";
        normalBullet2.Tag = "luoti";
        normalBullet3.Tag = "luoti";
        normalBullet4.Tag = "luoti";
        normalBullet5.Tag = "luoti";
        normalBullet6.Tag = "luoti";
        normalBullet7.Tag = "luoti";
        normalBullet8.Tag = "luoti";
        normalBullet9.Tag = "luoti";
        normalBullet10.Tag = "luoti";
        normalBullet11.Tag = "luoti";
        normalBullet12.Tag = "luoti";
        normalBullet13.Tag = "luoti";
        normalBullet14.Tag = "luoti";
        normalBullet15.Tag = "luoti";
        normalBullet16.Tag = "luoti";
        homingBullet.Tag = "luoti";
        laser1.Tag = "luoti";
        laser2.Tag = "luoti";
        reuna.Tag = "reuna";

        Add(normalBullet1);
        Add(normalBullet2);
        Add(normalBullet3);
        Add(normalBullet4);
        Add(normalBullet5);
        Add(normalBullet6);
        Add(normalBullet7);
        Add(normalBullet8);
        Add(normalBullet9);
        Add(normalBullet10);
        Add(normalBullet11);
        Add(normalBullet12);
        Add(normalBullet13);
        Add(normalBullet14);
        Add(normalBullet15);
        Add(normalBullet16);

        homingBullet.Y = 1000;
        homingBullet.Image = homingBulletKuva;
        FollowerBrain homingAivot = new FollowerBrain(pelaaja);
        homingBullet.CanRotate = false;
        homingBullet.Brain = homingAivot;
        Add(homingBullet);

        laser1.Image = laser1kuva;
        laser2.Image = laser2kuva;
        laser1.Y = 1000;
        laser2.Y = 1000;

        Add(laser1);
        Add(laser2);

        heart1.IgnoresCollisionResponse = true;
        heart2.IgnoresCollisionResponse = true;
        heart3.IgnoresCollisionResponse = true;
        heart4.IgnoresCollisionResponse = true;
        heart5.IgnoresCollisionResponse = true;
        heart1.Image = sydanKuva;
        heart2.Image = sydanKuva;
        heart3.Image = sydanKuva;
        heart4.Image = sydanKuva;
        heart5.Image = sydanKuva;
        heart1.Y = Screen.Bottom + 330;
        heart2.Y = Screen.Bottom + 330;
        heart3.Y = Screen.Bottom + 330;
        heart4.Y = Screen.Bottom + 330;
        heart5.Y = Screen.Bottom + 330;
        heart1.X = -250;
        heart2.X = -150;
        heart3.X = -50;
        heart4.X = 50;
        heart5.X = 150;
        Add(heart1);
        Add(heart2);
        Add(heart3);
        Add(heart4);
        Add(heart5);

        blackHole1.Shape = Shape.Circle;
        blackHole2.Shape = Shape.Circle;
        blackHole1.X = -300;
        blackHole1.Y = 1000;
        blackHole2.X = 200;
        blackHole2.Y = 1000;
        blackHole1.Tag = "mustaAukko";
        blackHole2.Tag = "mustaAukko";
        blackHole1.IgnoresCollisionResponse = true;
        blackHole2.IgnoresCollisionResponse = true;
        blackHole1.Image = mustaAukkoKuva;
        blackHole2.Image = mustaAukkoKuva;

        mustaAukkoAivot.Speed = 150;
        mustaAukkoAivot.Active = false;

        Add(blackHole1);
        Add(blackHole2);

        teeHyokkaysIlmanMustaaAukkoa();
        //teeHyokkays();
        //hyokkays1();
        //hyokkays2();
        //hyokkays3();
        //hyokkays4();
        //hyokkays5();
        //hyokkays6();
    }
Beispiel #15
0
 void LisaaNinja(Vector paikka, double leveys, double korkeus)
 {
     Ninja = new PlatformCharacter(leveys, korkeus);
     Ninja.Position = paikka;
     Ninja.Mass = 5.0;
     Ninja.Image = NinjanKuva;
     Ninja.Tag = "Ninja";
     Add(Ninja);
     NinjaAivot = new FollowerBrain(pelaaja1);
     NinjaAivot.Speed = 400;
     NinjaAivot.DistanceFar = 500;
     NinjaAivot.Active = true;
     Ninja.Brain = NinjaAivot;
 }
Beispiel #16
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)
            {

            }
        };
    }
Beispiel #17
0
    //tällä kauppa

    /*void Pause()
     * {
     *
     *  List<Label> painikkeet = new List<Label>();
     *
     *  Label kauppa = new Label("Kauppa:");
     *  Label ostaHp = new Label("Osta eläimiä");
     *  Label ostaAmmo = new Label("Osta Ammuksia(maksetaan elämillä)");
     *
     *  kauppa.Position = new Vector(0, 40);
     *  ostaHp.Position = new Vector(0, 50);
     *  ostaAmmo.Position = new Vector(0, 60);
     *  painikkeet.Add(kauppa);
     *  painikkeet.Add(ostaHp);
     *  painikkeet.Add(ostaAmmo);
     *  ostaHp.BorderColor = Color.Black;
     *  ostaAmmo.BorderColor = Color.Black;
     *
     *  foreach (Label painike in painikkeet)
     *  {
     *      Add(painike);
     *  }
     *  Mouse.ListenOn(ostaHp, MouseButton.Left, ButtonState.Pressed, pelaajaOstaaHp, null);
     *  Mouse.ListenOn(ostaAmmo, MouseButton.Left, ButtonState.Pressed, pelaajaOstaaAmmo, null);
     * }*/
    //kierrosten ja vihujen luonti
    void Kierros()
    {
        //lita vihuista
        vihut = new List <Monsteri>();

        kierros++;
        vihollisteMaara = 2 * kierros;


        //vihujenluonti
        for (int z = 0; z < vihollisteMaara; z++)
        {
            //viholliset seuraajiksi
            Zombie zombi = new Zombie(40, 80);

            FollowerBrain VihunAivot = new FollowerBrain(pelaaja1)
            {
                Speed         = zombi.nopeus,
                DistanceFar   = 1900,
                DistanceClose = 10
            };


            zombi.Image    = ZombienKuva;
            zombi.Position = zombi.Respaus;
            zombi.Tag      = "vihu";

            zombi.Brain     = VihunAivot;
            zombi.CanRotate = false;

            AddCollisionHandler(pelaaja1, zombi, Hyokkaa);

            vihut.Add(zombi);
            Add(zombi);
        }
        // piruja joka 3. rundi
        if (kierros % 3 == 0)
        {
            vihollisteMaara++;
            Piru piru = new Piru(100, 100);

            FollowerBrain VihunAivot = new FollowerBrain(pelaaja1)
            {
                Speed         = piru.nopeus,
                DistanceFar   = 1900,
                DistanceClose = 30
            };
            piru.Image    = pirunKuva;
            piru.Brain    = VihunAivot;
            piru.Tag      = "vihu";
            piru.Position = piru.Respaus;
            while (piru.Position.Distance(pelaaja1.Position) < 40)
            {
                piru.Position = piru.Respaus;
            }

            piru.CanRotate = false;
            AddCollisionHandler(pelaaja1, piru, Hyokkaa);
            vihut.Add(piru);
            Add(piru);
        }
        //HpBoxit peliin, joka kierros chance saada 20%
        Random hpChance = new Random();

        if (hpChance.Next(0, 10) >= 8)
        {
            hp       = new HpBox(30, 30);
            hp.Image = hpBoxi;
            AddCollisionHandler(pelaaja1, hp, Keraa);
            if (hp.hpBoxiKentalla == false)
            {
                hp.hpBoxiKentalla = true;
                Add(hp);
            }
        }
        //kauppa joka 3. kierros
        if (kierros % 3 == 0)
        {
            //Pause();
        }
    }
Beispiel #18
0
 void AddNewRunnerCat()
 {
     PlatformCharacter runner = CreateCat(RandomGen.NextColor());
     runner.X = RandomGen.NextInt(-500, 500);
     FollowerBrain pwb = new FollowerBrain(flag);
     //pwb.TriesToJump = false;
     //pwb.FallsOffPlatforms = false;
     //pwb.JumpSpeed = JUMP_POWAH_INITIAL;
     pwb.Speed = RUN_SPEED_MAX;
     runner.Brain = pwb;
     // TODO: Create better brain (try follower brain to flag)
 }
Beispiel #19
0
    /// <summary>
    /// Pelin tosiasiallinen "pääohjelma", jossa luodaan pelimaailma ja valikot jokaista kenttää varten sekä asetetaan oletusarvoiset törmäyksenkäsittelijät ja arvot.
    /// Kentästä riippuen luodaan myös kentälle ominaiset arvot, oliot ja asetukset.
    /// </summary>
    public override void Begin()
    {
        SetWindowSize(resoluutioLeveys, resoluutioKorkeus);
        Level.Width  = resoluutioLeveys;
        Level.Height = resoluutioKorkeus;
        Camera.ZoomToLevel();

        Label    bensamittari = new Label();
        IntMeter bensanMaara  = new IntMeter(500, 0, 10000);
        CollisionShapeParameters tormaysparametrit = new CollisionShapeParameters();

        tormaysparametrit.DistanceGridSpacing = 25; // Törmäysparametrien muuttaminen, jotta fysiikat törmäyksissä ovat tarkempia.
        tormaysparametrit.MaxVertexDistance   = 25;
        PhysicsObject pelaaja = new PhysicsObject(50, 50);

        //moottori = LoadAnimation("Moottori");
        rakettimoottoriKayta = rakettimoottori.CreateSound(); // Muutetaan äänet Soundeffectistä Soundiksi, jotta saadaan oikeanlainen ääni.
        tormaysKayta         = tormays.CreateSound();
        LuoOhjaimet(pelaaja, alkuteksti, bensamittari, bensanMaara);
        IsPaused = false;

        switch (mikaKentta)
        {
        case 0:     // Case 0 tarkoitus on luoda ensimmäisellä käynnistyskerralla pelin aloitusteksti ennen pelin aloittamista.
            LuoAlkuvalikko(alkuteksti, bensamittari, pelaaja);
            LuoKentta(maastonKuva, -200, 700, tormaysparametrit, bensanMaara);
            Level.Background.CreateGradient(Color.White, Color.Azure);
            LuoLaskeutumisalusta(700, -176, 100);
            LuoPelaaja(pelaaja, -400, 0);
            mikaKentta++;
            break;

        case 1:
            LuoAlkuteksti(alkuteksti, pelaaja);
            LuoKentta(maastonKuva, -200, 700, tormaysparametrit, bensanMaara);
            Level.Background.CreateGradient(Color.White, Color.Azure);
            LuoLaskeutumisalusta(700, -176, 100);
            LuoPelaaja(pelaaja, -400, 0);
            break;

        case 2:
            LuoAlkuteksti(alkuteksti, pelaaja);
            LuoKentta(maaston2Kuva, -100, 300, tormaysparametrit, bensanMaara);
            Level.Background.CreateStars();
            LuoLaskeutumisalusta(210, -440, 100);
            LuoPelaaja(pelaaja, -700, -50);

            PhysicsObject maa = PhysicsObject.CreateStaticObject(400, 400);
            maa.CollisionIgnoreGroup = 1;
            maa.Image    = maanKuva;
            maa.Position = new Vector(Level.Left + 400, Level.Top - 300);
            Add(maa, 0);
            break;

        case 3:
            LuoAlkuteksti(alkuteksti, pelaaja);

            LuoKentta(maaston3Kuva, -150, 1100, tormaysparametrit, bensanMaara);
            Level.Background.CreateStars();
            LuoPelaaja(pelaaja, -500, 25);
            PhysicsObject aurinko = PhysicsObject.CreateStaticObject(2000, 1100);
            aurinko.Image                = auringonKuva;
            aurinko.Position             = new Vector(-700, 500);
            aurinko.CollisionIgnoreGroup = 1;
            Add(aurinko, -1);

            //Shape sukkulanMuoto = Shape.FromImage(sukkulanKuva);
            PhysicsObject sukkula = new PhysicsObject(800, 400);
            sukkula.Angle                = Angle.FromDegrees(-10);
            sukkula.Position             = new Vector(-550, 80);
            sukkula.Image                = sukkulanKuva;
            sukkula.CollisionIgnoreGroup = 2;
            Add(sukkula);

            PhysicsObject sukkulanKatto = new PhysicsObject(360, 60);
            sukkulanKatto.CollisionIgnoreGroup     = 1;
            sukkulanKatto.IgnoresCollisionResponse = true;
            sukkula.IgnoresPhysicsLogics           = true;
            sukkulanKatto.IgnoresGravity           = true;
            sukkulanKatto.Angle    = Angle.FromDegrees(-10);
            sukkulanKatto.Position = new Vector(sukkula.X - 10, sukkula.Y - 110);
            sukkulanKatto.Image    = katonKuva;
            Add(sukkulanKatto, 1);

            LuoLaskeutumisalusta(sukkula.X, sukkula.Y - 76, 400, Color.Transparent);
            laskeutumisAlusta.CollisionIgnoreGroup = 1;
            laskeutumisAlusta.Color = Color.Transparent;
            laskeutumisAlusta.Angle = Angle.FromDegrees(-10);

            PhysicsObject mineraali = new PhysicsObject(20, 20);
            mineraali.Image = mineraalinKuva;
            //mineraali.Shape = Shape.FromImage(mineraalinKuva);
            mineraali.Position = new Vector(700, -321);
            Add(mineraali);

            AddCollisionHandler(pelaaja, mineraali, delegate(PhysicsObject luotain, PhysicsObject kohde) { laskeutumisAlusta.CollisionIgnoreGroup = 0; mineraali.Destroy(); pelaaja.Mass += 0.75; });

            Image kipina = LoadImage("Kipina");
            Flame liekki = new Flame(kipina);
            liekki.MinLifetime = -40;
            liekki.MaxLifetime = 2;
            liekki.Position    = pelaaja.Position;
            FollowerBrain liekinAivo = new FollowerBrain(pelaaja);
            liekki.Brain     = liekinAivo;
            liekinAivo.Speed = 10;
            liekki.MinScale  = 0;
            liekki.MaxScale  = 10;

            Timer    merkuriusAjastin = new Timer();
            IntMeter merkuriusAika    = new IntMeter(25, 0, 25);
            merkuriusAjastin.Interval = 1;
            merkuriusAjastin.Timeout += delegate { if (merkuriusAika == 22)
                                                   {
                                                       Add(liekki);
                                                   }
                                                   if (liekki.MinLifetime < 1.5)
                                                   {
                                                       liekki.MinLifetime += 2;
                                                   }
                                                   merkuriusAika.Value -= 1; };
            merkuriusAjastin.Start();
            merkuriusAika.LowerLimit += delegate { TuhoaPelaaja(pelaaja); };

            Label aikanaytto = new Label("moro");
            aikanaytto.TextColor = Color.White;
            aikanaytto.Position  = new Vector(Screen.Left + 100, Screen.Top - 130);
            aikanaytto.BindTo(merkuriusAika);
            aikanaytto.IntFormatString = "Time: {0:D2}";
            Add(aikanaytto);

            Sound oviKayta = ovi.CreateSound();

            AddCollisionHandler(pelaaja, laskeutumisAlusta, delegate(PhysicsObject luotain, PhysicsObject laskeutumisAlusta) { if (pelaajaOnTuhoutunut == false)
                                                                                                                               {
                                                                                                                                   merkuriusAjastin.Stop(); sukkulanKatto.MoveTo(new Vector(sukkula.X - 15, sukkula.Y - 47), 50); liekki.Destroy(); oviKayta.Play();
                                                                                                                               }
                                });

            break;

        case 4:
            LuoAlkuteksti(alkuteksti, pelaaja);
            LuoKentta(maaston4Kuva, -200, 3000, tormaysparametrit, bensanMaara);
            Level.Background.Color = Color.Black;
            LuoLaskeutumisalusta(700, -370, 100);
            LuoPelaaja(pelaaja, Level.Left + 70, Level.Top - 200);
            Level.AmbientLight = 0.075;

            Light valo = new Light();
            valo.Intensity = 0.0;
            valo.Distance  = 30;
            Add(valo);

            Timer aika = new Timer();
            aika.Interval = 0.1;

            Keyboard.Listen(Key.Up, ButtonState.Pressed, delegate { aika.Start(); aika.Timeout += delegate { valo.Position = pelaaja.Position; valo.Intensity = 1.0; }; }, "Valo, joka seuraa pelaajaa aina, kun rakettimoottoria käytetään");
            Keyboard.Listen(Key.Up, ButtonState.Released, delegate { aika.Stop(); valo.Intensity = 0.0; }, "Avaruusluotaimen rakettimoottorin animaation lopetus");
            AddCollisionHandler(pelaaja, delegate(PhysicsObject luotain, PhysicsObject kohde)
            {
                const int NOPEUSRAJA = 100;
                if (pelaaja.Velocity.Y > NOPEUSRAJA || pelaaja.Velocity.Y < -NOPEUSRAJA || pelaaja.Velocity.X > NOPEUSRAJA || pelaaja.Velocity.X < -NOPEUSRAJA)
                {
                    aika.Start(); aika.Timeout += delegate { valo.Position = pelaaja.Position; }; valo.Intensity = 2.0;
                }
            });
            break;

        case 5:
            Level.Width  = 4800;
            Level.Height = 900;
            LuoKentta(maaston5Kuva, -150, 2150, tormaysparametrit, bensanMaara, 4800);
            Level.Background.CreateStars();
            LuoAlkuteksti(alkuteksti, pelaaja);
            LuoLaskeutumisalusta(2250, -357, 200);
            LuoPelaaja(pelaaja, 100, -150, true);

            PhysicsObject luola = PhysicsObject.CreateStaticObject(840, 510);
            luola.CollisionIgnoreGroup = 1;
            luola.Image    = luolanKuva;
            luola.Position = new Vector(1247, 155);
            Add(luola, 1);

            PhysicsObject luolanSuu = PhysicsObject.CreateStaticObject(270, 30, Shape.Circle);
            luolanSuu.Image = Image.FromGradient(100, 10, Color.Black, Color.Charcoal);
            luolanSuu.CollisionIgnoreGroup = 1;
            luolanSuu.Angle    = Angle.FromDegrees(5);
            luolanSuu.Position = new Vector(luola.X - 80, luola.Bottom + 150);
            Add(luolanSuu);

            PhysicsObject esteYlin = TeeEste(470, -138);
            esteYlin.Mass = 45;
            TeeEste(470, -240);
            TeeEste(470, -342);

            PhysicsObject kivi = new PhysicsObject(100, 100, Shape.Circle);
            kivi.Position = new Vector(-2000, 100);
            kivi.Image    = kivenKuva;
            kivi.Mass     = 10;
            Add(kivi);

            PhysicsObject planeetta = PhysicsObject.CreateStaticObject(400, 400);
            planeetta.CollisionIgnoreGroup = 1;
            planeetta.Image            = planeetankuva;
            planeetta.AbsolutePosition = new Vector(Level.Right - 100, Level.Top - 100);
            Add(planeetta, 0);
            break;

        case 6:
            Keyboard.Clear();
            LuoOhjaimet(pelaaja, alkuteksti, bensamittari, bensanMaara, 450);
            LuoAlkuteksti(alkuteksti, pelaaja);
            LuoKentta(maaston6Kuva, -400, 2400, tormaysparametrit, bensanMaara);
            Level.Background.Image = LoadImage("JupiterTausta");
            Level.Background.CreateStars();
            LuoLaskeutumisalusta(700, -195, 70);
            LuoPelaaja(pelaaja, -700, 400);
            LopetaNappainkomennot();
            break;

        case 7:
            mustaAukkoKayta = mustaAukko.CreateSound();
            //mustaAukkoAnimaatio = LoadAnimation("MustanAukonAnimaatio");
            LuoAlkuteksti(alkuteksti, pelaaja);
            Level.Width = 8000;
            Level.CreateBorders();
            Level.Background.CreateStars();
            LuoLaskeutumisalusta(Level.Right, Level.Bottom, 1);
            LuoPelaaja(pelaaja, Level.Left + 100, 0, true);
            pelaajaOnTuhoutunut  = false;
            pelaajaOnLaskeutunut = false;
            bensanMaara.Value    = 1500;
            for (int i = 0; i < 15; i++)
            {
                PhysicsObject a = LuoAsteroidit(200, 500);

                if (Vector.Distance(a.Position, pelaaja.Position) < a.Height)
                {
                    a.Destroy();
                    i--;
                }
            }

            int[,] mustanAukonKohdat = new int[, ] {
                { -2500, 300 }, { 0, -300 }, { 1500, 0 }, { 2500, 100 }
            };
            for (int i = 0; i < 4; i++)
            {
                LuoMustaAukko(mustanAukonKohdat[i, 0], mustanAukonKohdat[i, 1], 5000, pelaaja);
            }

            Timer lapi = new Timer();
            lapi.Start();
            lapi.Interval = 0.1;
            lapi.Timeout += delegate
            {
                if (pelaaja.X >= Level.Right - 100 && pelaajaOnTuhoutunut == false)
                {
                    pelaaja.Image = pelaajanKuva;
                    LopetaNappainkomennot();
                    pelaajaOnLaskeutunut = true;
                    LuoKentanPaatosteksti();
                    Pause();
                }
            };
            break;

        case 8:
            LuoAlkuteksti(alkuteksti, pelaaja);
            LuoKentta(maaston8Kuva, -210, 330, tormaysparametrit, bensanMaara);
            Level.Background.CreateGradient(Color.White, Color.Azure);
            LuoLaskeutumisalusta(677, -307, 200, Color.DarkGray);
            LuoPelaaja(pelaaja, -700, -100);

            PhysicsObject tukikohta = PhysicsObject.CreateStaticObject(200, 100);
            tukikohta.Position             = new Vector(674, -255);
            tukikohta.Image                = asema;
            tukikohta.CollisionIgnoreGroup = 1;
            Add(tukikohta);

            PhysicsObject pikkuKivi = PhysicsObject.CreateStaticObject(14, 14);
            pikkuKivi.Image    = pienenKivenKuva;
            pikkuKivi.Position = new Vector(530, -300);
            Add(pikkuKivi);
            AddCollisionHandler(pelaaja, pikkuKivi, delegate(PhysicsObject luotain, PhysicsObject murikka) { pelaaja.AngularVelocity = -5; });
            break;

        case 9:
            Level.Background.Image = LoadImage("Loppu");
            LuoLaskeutumisalusta(700, -175, 100);
            LuoPelaaja(pelaaja, -400, 0);
            pelaaja.Destroy();
            laskeutumisAlusta.Destroy();
            bensamittari.Destroy();
            rakettimoottoriKayta.Volume = 0;

            string[] lopputekstit = new string[] { "Congratulations, Mission Accomplished", "You destroyed " + pelaajanTuhoutumiset + " probes during your journey",
                                                   "The managers of the space program wish you good retirement", "They really hope you retire", "", "Credits:", "Game created by Antti Franssila", "",
                                                   "Licence free stuff:", "Space probe image - historicspacecraft.com", "Images used in creating levels - pixabay.com", "Black hole animation - bestanimations.com", "Sounds - freesound.org" };

            Timer tekstiAjastin = new Timer();
            tekstiAjastin.Interval = 3;
            tekstiAjastin.Start();
            int tekstilaskuri = 0;
            tekstiAjastin.Timeout += delegate {
                Label lopputeksti = new Label(lopputekstit[tekstilaskuri]);
                lopputeksti.TextColor = Color.White;
                lopputeksti.Y         = -200;
                lopputeksti.X         = 30;
                Add(lopputeksti);
                lopputeksti.MoveTo(new Vector(30, 10), 10, lopputeksti.Destroy);
                tekstilaskuri++;
                if (tekstilaskuri == lopputekstit.Length)
                {
                    tekstiAjastin.Stop();
                }
            };
            break;
        }
        LuoBensa(bensamittari, bensanMaara, pelaaja);
        AddCollisionHandler(pelaaja, Tuhoutuminen);
        AddCollisionHandler(pelaaja, tormaaminen);
        AddCollisionHandler(pelaaja, laskeutumisAlusta, Laskeutuminen);
    }
Beispiel #20
0
    void Osuma(PhysicsObject ammus, PhysicsObject kohde)
    {
        bool tuhotaankoAmmus = true;

        rynkky.Ammo.Value--;

        pisteLaskuri.Value = rynkky.Ammo.Value;
        if (kohde.Tag.Equals("vihu"))
        {
            Random ohi    = new Random();
            int    dodged = ohi.Next(1, 10);
            if (dodged > 6)
            {
                kohde.Tag = "dodged";
            }
            else
            {
                kohde.Tag = "osui";
            }

            int      monsterinSijainti = 0;
            Monsteri jotain            = vihut[monsterinSijainti];
            while (monsterinSijainti < vihut.Capacity)
            {
                if (vihut[monsterinSijainti].Tag.Equals("dodged"))
                {
                    jotain = vihut[monsterinSijainti];

                    break;
                }
                if (vihut[monsterinSijainti].Tag.Equals("osui"))
                {
                    jotain = vihut[monsterinSijainti];

                    break;
                }

                monsterinSijainti++;
            }

            if (jotain.Tag.Equals("dodged"))
            {
                tuhotaankoAmmus = false;
                jotain.nopeus  += 30;
                FollowerBrain VihunAivot = new FollowerBrain(pelaaja1)
                {
                    Speed         = jotain.nopeus,
                    DistanceFar   = 900,
                    DistanceClose = 10
                };
                jotain.Brain = VihunAivot;
            }
            if (jotain.Tag.Equals("osui"))
            {
                jotain.Elamat -= 25;
                if (jotain.Elamat <= 0)
                {
                    vihollisteMaara--;
                    vihut.Remove(vihut[monsterinSijainti]);
                    jotain.Destroy();
                    rynkky.Ammo.Value += 10;
                    pisteLaskuri.Value = rynkky.Ammo.Value;

                    //vihun taposta ammobox
                    ammo       = new AmmoBox(30, 30);
                    ammo.Tag   = "Ammo";
                    ammo.Image = ammoBox;

                    AddCollisionHandler(pelaaja1, ammo, Keraa);
                    if (ammo.ammoBoxiKentalla == false)
                    {
                        ammo.ammoBoxiKentalla = true;
                        ammo.Position         = jotain.Position;
                        Add(ammo);
                    }
                }
            }
            jotain.Tag = "vihu";
        }
        //pisteLaskuri.Value--;
        if (tuhotaankoAmmus)
        {
            ammus.Destroy();
        }



        if (vihollisteMaara == 0)
        {
            Kierros();
        }
    }
Beispiel #21
0
    void Luovihollinen(Vector paikka, double leveys, double korkeus)
    {
        //PhysicsObject vihollinen = new PhysicsObject(leveys, korkeus);
        PlatformCharacter vihollinen = new PlatformCharacter(leveys, korkeus);
        Vector kentanPiste = Level.GetRandomPosition();
        vihollinen.Position = kentanPiste;
        vihollinen.Shape = Shape.Rectangle;
        vihollinen.Color = Color.Red;
        vihollinen.Image = päävihollinen;
        //RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
        //vihollinen.Brain = satunnaisAivot;

        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
        vihollinen.Brain = seuraajanAivot;
        seuraajanAivot.DistanceClose = 100;
        vihollinen.CanRotate = false;
        //seuraajanAivot.TurnWhileMoving = true;

        vihollisenase = new AssaultRifle(30, 10);
          vihollinen.Weapon = vihollisenase;
        vihollisenase.ProjectileCollision = AmmusOsui;
        vihollinen.Weapon.Ammo.Value = 1000;
        seuraajanAivot.TargetClose += mitatapahtuukunollaanlahella;
        //vihollinen.Add(vihollisenase);
        Add(vihollinen);
    }