From e58b55993dff076956130375790c528a6bce50dc Mon Sep 17 00:00:00 2001 From: Jonas Date: Wed, 16 Sep 2026 11:50:58 +0200 Subject: [PATCH] =?UTF-8?q?Es=20gibt=20jetzt=20einen=20Enemy,=20welcher=20?= =?UTF-8?q?in=20festen=20abst=C3=A4nden=20auf=20den=20Player=20schie=C3=9F?= =?UTF-8?q?t.=20Der=20Enemy=20kann=20mit=20PlayerProjectiles=20abgeschosse?= =?UTF-8?q?n=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMIMS-Game/Enemy.class | Bin 0 -> 992 bytes SMIMS-Game/Enemy.ctxt | 7 ++ SMIMS-Game/Enemy.java | 22 ++++++ SMIMS-Game/EnemyProjectile.class | Bin 0 -> 758 bytes SMIMS-Game/EnemyProjectile.ctxt | 9 +++ SMIMS-Game/EnemyProjectile.java | 34 +++++++++ SMIMS-Game/Player.class | Bin 3784 -> 3818 bytes SMIMS-Game/Player.java | 3 +- SMIMS-Game/PlayerProjectile.class | Bin 766 -> 1004 bytes SMIMS-Game/PlayerProjectile.ctxt | 6 +- SMIMS-Game/PlayerProjectile.java | 8 ++ SMIMS-Game/images/bee.png | Bin 0 -> 1768 bytes SMIMS-Game/images/yellow-draught.png | Bin 0 -> 269 bytes SMIMS-Game/project.greenfoot | 108 ++++++++++++++++++--------- 14 files changed, 158 insertions(+), 39 deletions(-) create mode 100644 SMIMS-Game/Enemy.class create mode 100644 SMIMS-Game/Enemy.ctxt create mode 100644 SMIMS-Game/Enemy.java create mode 100644 SMIMS-Game/EnemyProjectile.class create mode 100644 SMIMS-Game/EnemyProjectile.ctxt create mode 100644 SMIMS-Game/EnemyProjectile.java create mode 100644 SMIMS-Game/images/bee.png create mode 100644 SMIMS-Game/images/yellow-draught.png diff --git a/SMIMS-Game/Enemy.class b/SMIMS-Game/Enemy.class new file mode 100644 index 0000000000000000000000000000000000000000..77ba588f4c59c999fb37c9de7aaace6fb4775f75 GIT binary patch literal 992 zcmZuwYflqF6g|^zS-Na_l!tHSp>?|;RqwIL=W*emBD(|zxz@M$ zyn5Ucn6aEa_q|&R+~!VcHE>(4axw9=V?QW4ek(2y;1VwDxME@wQv!nuaC%L#Bor98 zDqW=FN;0sr8P=erSEEoS^#jkqG&Cu%VB$I~fixLjtF9^4wu#vj_m{?sh;=-U;h&u<1s=Ja?Vxc-JRbca)kk%XRD2-FKiKl5gZB55SutPrh|eu)s)y z>bV$|+lbxzyEXTqo50uz+fm(n&JJ-HRF-+!YfQ0KDUP7v;-t`O+;awL@9|XPSKejp zV~9`Oq;Q{BUdzx2v}O{3hj_%3K=~BBz*7S5K<|O&tb=*e$o`jrGfkMxe#97!->SX! z8D{#;5low#;l@WS+Z_z&$2yqMzTjdCKQQKe!}QiMuCB?eIht!+#SZ4?W;?jab*qEh zwnh?Ji>8E3vko8!gX%}Azkp%R!w8o6bG)Eu9pkFTNyZmY#3CNEwt4n#3Cl`HwJZDy Qc`^{c2oe0FWv8D00mvJ{HUIzs literal 0 HcmV?d00001 diff --git a/SMIMS-Game/Enemy.ctxt b/SMIMS-Game/Enemy.ctxt new file mode 100644 index 0000000..214f50f --- /dev/null +++ b/SMIMS-Game/Enemy.ctxt @@ -0,0 +1,7 @@ +#BlueJ class context +comment0.target=Enemy +comment1.params= +comment1.target=void\ act() +comment2.params= +comment2.target=void\ shootAtPlayer() +numComments=3 diff --git a/SMIMS-Game/Enemy.java b/SMIMS-Game/Enemy.java new file mode 100644 index 0000000..26b2436 --- /dev/null +++ b/SMIMS-Game/Enemy.java @@ -0,0 +1,22 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +public class Enemy extends Actor +{ + int shootTimer; + public void act() + { + shootAtPlayer(); + } + + + public void shootAtPlayer(){ + shootTimer++; + if (shootTimer >= 100){ + Player player = getWorld().getObjects(Player.class).get(0); + EnemyProjectile enemyProjectile = new EnemyProjectile(); + getWorld().addObject(enemyProjectile, getX(), getY()); + enemyProjectile.turnTowards(player.getX(), player.getY()); + shootTimer = 0; + } + } +} diff --git a/SMIMS-Game/EnemyProjectile.class b/SMIMS-Game/EnemyProjectile.class new file mode 100644 index 0000000000000000000000000000000000000000..82e5ff25d7498cfeb6653de5d945501d83f3bafb GIT binary patch literal 758 zcmZ8fT~8BH5IwiM{aS7<{n`o&A_{D)f-$_+m=J@3qzXwD(6{aOQWo32W?4w|r}#j^ zJ1@S}#0P(XKguw(El|3fow;-GnKS3k?7#ni{sP#*s)YoMG)##kQUca)sE?Hw`8_3& zdhG{(^hUsNYI_zk$fjXQOhF3dHv`rGK8`l~`izoHXL|^~Cy~drK-oXJh3y0_FH|as zIlnMxQKE#hK&GpreI52X0wt%`>@w<5>u4?BY*?^SP2;}A3}&hP#JPYB6${vDvwW)R zj8SZOkq#R}Sq~-VFi$$E-sf1xHghjXJm&2zZEq>Rdla#_ClXJu!3UJ{R(I%%`KBMJ z52yXM3O~AS?o_dhJs>>R4t;qGhzIVTk60DX!4L$WP zZhm2`rQ4V<3wavT_K3gBnEw^_%2R zgl3#wpSA`_*9XY`#1y##eHCUiVzweoS{EpbKDJy{&S6oVm)c^nh literal 0 HcmV?d00001 diff --git a/SMIMS-Game/EnemyProjectile.ctxt b/SMIMS-Game/EnemyProjectile.ctxt new file mode 100644 index 0000000..e2a02d2 --- /dev/null +++ b/SMIMS-Game/EnemyProjectile.ctxt @@ -0,0 +1,9 @@ +#BlueJ class context +comment0.target=EnemyProjectile +comment0.text=\r\n\ Write\ a\ description\ of\ class\ EnemyProjectile\ here.\r\n\ \r\n\ @author\ (your\ name)\ \r\n\ @version\ (a\ version\ number\ or\ a\ date)\r\n +comment1.params= +comment1.target=void\ act() +comment1.text=\r\n\ Act\ -\ do\ whatever\ the\ EnemyProjectile\ wants\ to\ do.\ This\ method\ is\ called\ whenever\r\n\ the\ 'Act'\ or\ 'Run'\ button\ gets\ pressed\ in\ the\ environment.\r\n +comment2.params= +comment2.target=boolean\ isProjectileOnScreen() +numComments=3 diff --git a/SMIMS-Game/EnemyProjectile.java b/SMIMS-Game/EnemyProjectile.java new file mode 100644 index 0000000..0d3d0e9 --- /dev/null +++ b/SMIMS-Game/EnemyProjectile.java @@ -0,0 +1,34 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +/** + * Write a description of class EnemyProjectile here. + * + * @author (your name) + * @version (a version number or a date) + */ +public class EnemyProjectile extends Projectile +{ + /** + * Act - do whatever the EnemyProjectile wants to do. This method is called whenever + * the 'Act' or 'Run' button gets pressed in the environment. + */ + public void act() + { + move(10); + if (!isProjectileOnScreen()){ + getWorld().removeObject(this); + } + } + + public boolean isProjectileOnScreen(){ + //Check Y-Value + if (getY() <= 0 || getY() >= getWorld().getHeight()-1){ + return false; + } + //Check X-Value + if (getX() <= 0 || getX() >= getWorld().getHeight()-1){ + return false; + } + return true; + } +} diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index 54dffb6d5d72a9e2f460570c848e9dd91ac75e49..f00f6aa7bcbf10ee419c06cd3ec749af5198d946 100644 GIT binary patch delta 843 zcmY+C$xl;J7{!0D105++pi<}qV}M{SHWAZ}8pWtF8jUVwVM!3BqERrYXh0kiW7H7c zyp_fY98j?+R;$GUXAu7ib!Xz%#D&9m+n2O%?z``O=bm%!Id4Y)uDfUdOuhnI_&ni0 zZx1-Qu3=x(lj!buGr|oAH@)04M(p!zM`h62*PR>O^>U9PjiN+vU&p?KPVT3^*<%(h zX;e8^YU4)Sxv=_y@Osf?jq;EQd1^eONY^vfdcNy@B85UQ(i*ncTa zBEw~kE0l))*9=E-O^dP+kXjV5RIVSQmj({d$lTbodlRoPBXNr$H;!84N7Sq^cIe#u{Tt8x-TQ&#OhX4_D^X=WrD^-s>B X=r?r^Ml_!%Wcfu<41JRC7H0ne&-R`* delta 877 zcmY+C$xl;J6vltA108LVDGaSsS`(2W5yQq95D`s`Mi-JGIG`3{0uqBnK@G-;F(JBn z8>c9as1y~!GAYi2{24A?7`HAoey>!ioAb`Q_nhDP?sxCE@LbqC|9ff%*u<9+?`5aY z%K&#=-1T$M9Cof+{=mR_q^rHX+u9iP^N4vpgv>J^qLsF7vlGTB^$MDel9|egaaH%RwElnNkk1 zQPXRPv7Hun(aIiFb-e@+|r<4WQ##`QL=7{;jpVvF2y+&17w-+kTx}G35 z$xTD5gVSto7-!1_b&j~*(qU)O=r$=iCZjtjq%+Ov(Emmk3cT*G(UK4mJ&z%nd diff --git a/SMIMS-Game/Player.java b/SMIMS-Game/Player.java index 700b5b5..0fbc75f 100644 --- a/SMIMS-Game/Player.java +++ b/SMIMS-Game/Player.java @@ -107,7 +107,8 @@ public class Player extends Actor } public boolean collision(){ - if (getIntersectingObjects(Projectile.class).size()>0) + if (getIntersectingObjects(Projectile.class).size()>0 + || getIntersectingObjects(Enemy.class).size()>0) { Greenfoot.setWorld(new GameOverWorld()); return true; diff --git a/SMIMS-Game/PlayerProjectile.class b/SMIMS-Game/PlayerProjectile.class index 104b3f95a5171c5ae76e8234cb189974587bcfdc..fd9d3b1f709ad481a7ece3aece75f0ba17ec0f72 100644 GIT binary patch delta 602 zcmY+BOG^S#6vzKpM=O~q6)lythvuV)J**aP3MmSLHf>rInB6AJWkV14tEO>qdPzqhnc2TA-<0#U zvT5W?wQ{3T%_ zg{`XRbu1wLP!NxY8aNWXJQw+dJguPhA0AJa}5k(iN4+`z%o`C39SA#AG2CD zM;{WdP&3y;OcC4;Axsg#&)NWn5k!bzg!A=?(Jryz^oS5q6MyIvViY=&3&dNP{KPo% z{!Y+B$O&kBdVwZ1)<-yWlrk~IN$ZIv`o-dek6@IiTEbmdtUzq?2|;C)LJJw~>=_>S y3!}Nt#a#b|_To&>oo!N8J$VXa{L2xfs6NY;W&TZ3_&0?Y+L#Ed?XR)Rh4o)9%vm=8 delta 362 zcmY+9y-osA5QV?HKddZEl<)F|1SLOHx1rsIKDKv-QHPP)4T3T94N=iC9Iw>hB85tP>0A>IH0RMh%pwS7)0000WbW%=J z|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|Ns90TwELN0000PbVXQnQ*UN;cVTj6 z07r6RaA;{`LvL<&WpZ?7ay4B@?f?J<@<~KNRCt`cnTvL#I1E6WnHGxIOCgSpU%3DO zmm|p!AOVv}_pH*>lcwQDZwcq^`zaYf#O3sDZ~r&#GB{_gF_Rj8OdE7?D8SR=40lGm zco5mPUE6-VPh$EJZSWyT-m;FdmVf-xVyZf?PP_Op@t#F#KmL8!LcB~HLI^k1i{#3i z=3P~BRoWZ~7sX3ZuTfLY)*4NOP;guZL)Pl464)9ogcU9X{N1%m>z8O#rXfcLNA|u; zZH`T?(9lrMdIvdzhLVOIe>W9VPiUAOMuPucNNK{Y{t=A?^o!Cs^D52ohyX(qt^0KL zW!-W}eP9vXb=DnUazZoG$dU5HMCH2H*;i?jXG2lk6`~;BYuSr_OHs&)2RQXQ%|+T3 zv_zPN=epvy8ck95CPVQzw3Du@x$QLH5XS@M2gex5P-~Yby7fu5oNY|kRC}rxLaKO( z=vO6m&voOh2tIA~%e16hDXuH)zG`K4PJ>c_AD7b2!&I%oYBUq>#XD1Jl{K2se#MbD zX@O>It@4;AymLMlJ<&M0k4w-^DFZ8s)kX|E++CXRB#;<9)~KgI*x-x?n8h7OPj_1m z(syVB*cfRtw+~9*5lyvLf3s)M{n+-xx|?%8h-bEeCL#{xq8m$rCRJk}fvs71Dd`D?OMmpWA^0pr{tw zKxIi3meN6QXmX+TmNtm7GmC=+I{hf=2|@m3LxDiurZ zs((bk;f~XKrwA|yKP`1S%=101=w{hw;M0~9)4Lsg+9Xu)a3`_Ug3G*2+r)HJ3!tYG z*!Zr}=~9+6E7g3jX!e1&&K0+g zZfu;{R*njSr5m5SM_P`>L*~UKv+@3t-$=V^c>+7!xTbaGMh}kU(X>>|YVWGrZfTa< zb*AX$oY_a!X&`pJ5t7L;K49BAdVie;9o;U@g1bS^EG(G%XkD$+E-^`%w9+gC%j)Uq zgr!PTcx%K<_D5+Y?3J(3M6i9ivoF$2`sgICO0(dqq|*x8e3|JWs3+%0zE8BcMe9OtH7T7 z25P&LgyWN`C%?~H@#aI#o~FU1#w`pUd&ftAPkT!K00030{{sM<^U!#1sb~WL0000< KMNUMnLSTYM@NRVg literal 0 HcmV?d00001 diff --git a/SMIMS-Game/images/yellow-draught.png b/SMIMS-Game/images/yellow-draught.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c75c4f5e2ccce52f0c2813ec1ebaa335c00821 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_>3?$zOPHh5G1_3@HuKz)R;s5{r|Nox>iV+0< zZyE0b6)~0s`2{mLJiCzwrpX|o!I^uRnj?$D)C8wVfesTB zT_y=0NaWq++H@j8;>3e*n(rgFK6r>mdKI;Vst0B9ah7ytkO literal 0 HcmV?d00001 diff --git a/SMIMS-Game/project.greenfoot b/SMIMS-Game/project.greenfoot index dcc22de..23c58f3 100644 --- a/SMIMS-Game/project.greenfoot +++ b/SMIMS-Game/project.greenfoot @@ -1,6 +1,8 @@ #Greenfoot project file class.BreakingPlattform.image=Unbenannt2.png class.Button.image=button-red.png +class.Enemy.image=bee.png +class.EnemyProjectile.image=yellow-draught.png class.GameOverWorld.image=GameOverBackground.png class.Ground.image=weave.jpg class.JumpBoostItem.image=mushroom.png @@ -8,6 +10,7 @@ class.MovingPlattform.image=Unbenannt.png class.MyWorld.image=GameBackground.png class.Plattform.image=Plattform.png class.Player.image=ppl2.png +class.PlayerProjectile.image=beeper.png class.Projectile.image=Projectile1.png class.Spike.image=Spike.png class.SpikedPlattform.image=SpikedPlattform.png @@ -18,65 +21,77 @@ dependency1.from=GameOverWorld dependency1.to=Button dependency1.type=UsesDependency dependency10.from=MyWorld -dependency10.to=BreakingPlattform +dependency10.to=Enemy dependency10.type=UsesDependency dependency11.from=MyWorld -dependency11.to=Projectile +dependency11.to=MovingPlattform dependency11.type=UsesDependency dependency12.from=MyWorld -dependency12.to=TargetingProjectile +dependency12.to=BreakingPlattform dependency12.type=UsesDependency -dependency13.from=Spike -dependency13.to=GameOverWorld +dependency13.from=MyWorld +dependency13.to=Projectile dependency13.type=UsesDependency -dependency14.from=Spike -dependency14.to=Player +dependency14.from=MyWorld +dependency14.to=TargetingProjectile dependency14.type=UsesDependency -dependency15.from=Player +dependency15.from=Spike dependency15.to=GameOverWorld dependency15.type=UsesDependency -dependency16.from=Player -dependency16.to=Plattform +dependency16.from=Spike +dependency16.to=Player dependency16.type=UsesDependency dependency17.from=Player -dependency17.to=Projectile +dependency17.to=GameOverWorld dependency17.type=UsesDependency -dependency18.from=Plattform -dependency18.to=MyWorld +dependency18.from=Player +dependency18.to=Plattform dependency18.type=UsesDependency -dependency19.from=Plattform -dependency19.to=Player +dependency19.from=Player +dependency19.to=PlayerProjectile dependency19.type=UsesDependency dependency2.from=PlayerTestWorld dependency2.to=Ground dependency2.type=UsesDependency -dependency20.from=MovingPlattform -dependency20.to=MyWorld +dependency20.from=Player +dependency20.to=Projectile dependency20.type=UsesDependency -dependency21.from=SpikedPlattform -dependency21.to=Spike +dependency21.from=Player +dependency21.to=Enemy dependency21.type=UsesDependency -dependency22.from=SpikedPlattform -dependency22.to=GameOverWorld +dependency22.from=Plattform +dependency22.to=MyWorld dependency22.type=UsesDependency -dependency23.from=SpikedPlattform -dependency23.to=MyWorld +dependency23.from=Plattform +dependency23.to=Player dependency23.type=UsesDependency -dependency24.from=TargetingProjectile -dependency24.to=Player +dependency24.from=MovingPlattform +dependency24.to=MyWorld dependency24.type=UsesDependency -dependency25.from=Button -dependency25.to=MyWorld +dependency25.from=SpikedPlattform +dependency25.to=Spike dependency25.type=UsesDependency -dependency26.from=PowerUps -dependency26.to=Player +dependency26.from=SpikedPlattform +dependency26.to=GameOverWorld dependency26.type=UsesDependency -dependency27.from=JumpBoostItem -dependency27.to=Player +dependency27.from=SpikedPlattform +dependency27.to=MyWorld dependency27.type=UsesDependency +dependency28.from=TargetingProjectile +dependency28.to=Player +dependency28.type=UsesDependency +dependency29.from=Button +dependency29.to=MyWorld +dependency29.type=UsesDependency dependency3.from=PlayerTestWorld dependency3.to=Player dependency3.type=UsesDependency +dependency30.from=PowerUps +dependency30.to=Player +dependency30.type=UsesDependency +dependency31.from=JumpBoostItem +dependency31.to=Player +dependency31.type=UsesDependency dependency4.from=PlayerTestWorld dependency4.to=JumpBoostItem dependency4.type=UsesDependency @@ -93,15 +108,15 @@ dependency8.from=MyWorld dependency8.to=Plattform dependency8.type=UsesDependency dependency9.from=MyWorld -dependency9.to=MovingPlattform +dependency9.to=JumpBoostItem dependency9.type=UsesDependency editor.fx.0.height=737 editor.fx.0.width=814 editor.fx.0.x=360 editor.fx.0.y=26 height=830 -package.numDependencies=27 -package.numTargets=18 +package.numDependencies=31 +package.numTargets=21 project.charset=UTF-8 publish.hasSource=false publish.locked=true @@ -173,19 +188,26 @@ target16.width=120 target16.x=0 target16.y=0 target17.height=70 -target17.name=SpikedPlattform +target17.name=EnemyProjectile target17.showInterface=false target17.type=ClassTarget target17.width=120 target17.x=0 target17.y=0 target18.height=70 -target18.name=MyWorld +target18.name=Enemy target18.showInterface=false target18.type=ClassTarget target18.width=120 target18.x=0 target18.y=0 +target19.height=70 +target19.name=PlayerProjectile +target19.showInterface=false +target19.type=ClassTarget +target19.width=120 +target19.x=0 +target19.y=0 target2.height=70 target2.name=Player target2.showInterface=false @@ -193,6 +215,20 @@ target2.type=ClassTarget target2.width=120 target2.x=0 target2.y=0 +target20.height=70 +target20.name=SpikedPlattform +target20.showInterface=false +target20.type=ClassTarget +target20.width=120 +target20.x=0 +target20.y=0 +target21.height=70 +target21.name=MyWorld +target21.showInterface=false +target21.type=ClassTarget +target21.width=120 +target21.x=0 +target21.y=0 target3.height=70 target3.name=MovingPlattform target3.showInterface=false