diff --git a/KelaCombat/KelaCombatTesti/Content/kentta1.png b/KelaCombat/KelaCombatTesti/Content/kentta1.png index 496e9698dbff8ccc88faaaa707c8d8927ce83088..3372318fa08b9077c6cb5f171e29a8aa5ab1c052 100644 Binary files a/KelaCombat/KelaCombatTesti/Content/kentta1.png and b/KelaCombat/KelaCombatTesti/Content/kentta1.png differ diff --git a/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs b/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs index 0c9117c6bcdfa2cae7f1f2350c4574b47126142a..90cbf48727f5ecbab9f9f2665e8dfe0127e655df 100644 --- a/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs +++ b/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs @@ -71,17 +71,17 @@ namespace KelaCombatTesti; void LiikuVasemmalle(Vector vektori) { - pelaaja.Walk(-100); + pelaaja.Walk(-120); } void LiikuOikealle(Vector vektori) { - pelaaja.Walk(100); + pelaaja.Walk(120); } void Hyppaa(Vector vektori) { - pelaaja.Jump(300.0); + pelaaja.Jump(280.0); } } @@ -93,7 +93,7 @@ namespace KelaCombatTesti; { Level.Background.CreateGradient(Color.DarkGray, Color.Blue); - Gravity = new Vector(0, -981.0); + Gravity = new Vector(0, -1100.0); // pelissä kentät luodaan piirtämällä pikseleitä. Pikselin väri kuvaa aina jotain tiettyä asiaa kentällä @@ -105,7 +105,7 @@ namespace KelaCombatTesti; ruudut.SetTileMethod(Color.Red, LuoKelabottiSpawni); //PUNAISEEN voi spawnaa vihu ruudut.SetTileMethod(Color.SkyBlue, LuoViinapullo); //VAALEANSNISET on pelaajaa parantavia viinapulloja - ruudut.Execute(70, 70); + ruudut.Execute(80, 80); @@ -166,6 +166,7 @@ namespace KelaCombatTesti; //Siis pelaajan elämien väheneminen VahnigoitaPelaajaa-aliohjelman mukaisesti AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa); AddCollisionHandler(pelaaja, "Viinapullo", ParannaPelaajaa); + AddCollisionHandler(pelaaja, "kappale", VahingoitaPelaajaa); Add(pelaaja); @@ -241,14 +242,17 @@ namespace KelaCombatTesti; /// <returns>Kelabotti</returns> void LuoKelabotti() { - Jypeli.PhysicsObject spawni = spawnipaikat[RandomGen.NextInt(spawnipaikat.Count)]; + PhysicsObject spawni = spawnipaikat[RandomGen.NextInt(spawnipaikat.Count)]; PlatformCharacter Kelabotti = new PlatformCharacter(80.0, 80.0); Kelabotti.Color = Color.Orange; Kelabotti.Image = KelabottiKuva; + Kelabotti.CollisionIgnoreGroup = 3; Kelabotti.MirrorImage(); Kelabotinelamalaskuri = new IntMeter(5); // Alussa on 5 elämää Kelabotti.Tag = "Kelabotti"; Kelabotti.Position = spawni.Position; + Kelabotti.Weapon = new AssaultRifle(30, 10); + Kelabotti.Weapon.ProjectileCollision = VahingoitaPelaajaa; Add(Kelabotti); @@ -256,16 +260,43 @@ namespace KelaCombatTesti; seuraajanAivot.Speed = 100; Kelabotti.Brain = seuraajanAivot; - + + Timer heittoajastin = new Timer(); + heittoajastin.Interval = 2; + heittoajastin.Timeout += delegate() { KelabotinAmmus(Kelabotti, "pelaaja"); }; + heittoajastin.Start(); + + // Destroyed-tapahtuma Jypelissä: + // https://tim.jyu.fi/view/kurssit/jypeli/tapahtumat/muuttapahtumat + Kelabotti.Destroyed += heittoajastin.Stop; + } - + /// <summary> + /// Aliohjelma, jossa käsitellään Kelabotin heittämä ammus + /// </summary> + /// <param name="heittavaOlio">Kelabotti heittää ammuksen</param> + /// <param name="kohdeolionTunniste">pelaajan tunniste</param> + public void KelabotinAmmus(PhysicsObject heittavaOlio, string kohdeolionTunniste) + { + PhysicsObject kappale = new PhysicsObject(15, 15, Shape.Circle); + //kappale.Hit(new Vector(180,80)); + kappale.Hit(new Vector()); + kappale.Position = heittavaOlio.Position; + kappale.CollisionIgnoreGroup = 3; + kappale.Color = Color.Silver; + kappale.Tag = "kappale"; + kappale.MaximumLifetime = TimeSpan.FromSeconds(8); + Add(kappale); + } + + /// <summary> /// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin /// </summary> /// <param name="pelaaja">pelaajahahmo</param> /// <param name="Kelabotti">pelin vihu; Kelabotti</param> - void VahingoitaPelaajaa(PhysicsObject pelaaja, PhysicsObject Kelabotti) + void VahingoitaPelaajaa(PhysicsObject pelaaja, PhysicsObject kappale) { int luku = RandomGen.NextInt(19, 34); pelaajanelamaLaskuri.Value = pelaajanelamaLaskuri - luku; // Vähentää pelaajan elämää satunnaisen määrän