From 70b774c5eadcd8dc2e7b859856ab383d126bd537 Mon Sep 17 00:00:00 2001 From: Hanki Sakari <sakari.s.b.hanki@student.jyu.fi> Date: Mon, 24 Mar 2025 12:59:29 +0200 Subject: [PATCH] =?UTF-8?q?Kelaboteille=20on=20lis=C3=A4tty=20aseet/jonkin?= =?UTF-8?q?lainen=20projektiilinheittomekaniikka?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KelaCombatTesti/Content/kentta1.png | Bin 555 -> 573 bytes KelaCombat/KelaCombatTesti/KelaCombatTesti.cs | 49 ++++++++++++++---- 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/KelaCombat/KelaCombatTesti/Content/kentta1.png b/KelaCombat/KelaCombatTesti/Content/kentta1.png index 496e9698dbff8ccc88faaaa707c8d8927ce83088..3372318fa08b9077c6cb5f171e29a8aa5ab1c052 100644 GIT binary patch delta 362 zcmZ3@vX^Cor`~=B2EP4_7OcT43=9ksC9V-A!TD(=<%vb93;~Imc_n&&t|1DhdWL%D z-PgWbPAm_SUslG*@Pe6v0Y;-KoA|=BKBw;#zx^u-KA@3rJY5_^JiOmd$>lq&z|nU1 z-KO9-4ZH8^ZF=+npXI_Noz^biT`4aoM`U*IYmlEV;N-*0P|dcY-1Rg2oI{s?R3}<l zvhpWdO^Pk9<hWl{e}3<gXMGo16q&Ph?RM5bzt>V$e6?wsH18kXI)-y=Ir~|@roDZ| zTfck*cc!57mOolXNyV8>CiOr0kL8uPttnn`?_tpLi!m!!Cuu)C{yDW%O8J~thJKp- zSE=h2Yqzt!dOLL%dx?fI@4SyEd^*#PxflnZzW2b+*hs8-6IXM8c)*Hu+vD%1J~$-6 xyY0(?6D+67OLHGrt$A|X+m<(b<y_8(+@~hEO`JcAuLl&E44$rjF6*2UngG$fntuQQ delta 343 zcmdnXvYKUrr``bu2EGG~S=Tx_85kHON?apKg7ec#$`gxH83GbB^GfvmTtgI0^$hjQ z{#-o1eqwo${QfdVh8N5X3@{o^*~Ax~^{Nm4*vu}?XaE{{%hSa%#KZgTlt8{i3OsEW zcUN%nzj(W+<6~{U$Lz912lw3~(`M9iHVOXtA-JPeAW4g1OM1gTYcu}`LjI56AFU}4 zvpG_u>RVjdAs=GDGB0qi;3Ns5f|nZu{w|Gb{ZjPQ>1;RKU(>$~bE1X%S!y@?l^#_s zt5*EmDaciuYxJnV(`jD)Us<W$tAiKKWv*@CZq=*jx=hx3)77;pVw!#Dk6JFfD(!gx zUf6cACvGz<Qi7Jvo*_9YMp<qX_pR4Y=0$0j`NwuCN>2Ntxb)5P{@Zrzzb}^xp7$y< eWBaX{0(H}vjAwJ&?$ZZ)lfl!~&t;ucLK6Ts$d8Ty diff --git a/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs b/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs index 0c9117c..90cbf48 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 -- GitLab