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