From 8477d63e51b7a878e6f03d751c69462d9c1387d9 Mon Sep 17 00:00:00 2001 From: Jonas Date: Wed, 16 Sep 2026 15:57:46 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=BCgt=20Leben=20zum=20Spieler,=20ein=20Heal?= =?UTF-8?q?thItem=20und=20eine=20Healthbar=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMIMS-Game/HealthItem.class | Bin 0 -> 728 bytes SMIMS-Game/HealthItem.ctxt | 8 ++++++ SMIMS-Game/HealthItem.java | 21 ++++++++++++++++ SMIMS-Game/Healthbar.class | Bin 0 -> 1374 bytes SMIMS-Game/Healthbar.ctxt | 8 ++++++ SMIMS-Game/Healthbar.java | 20 +++++++++++++++ SMIMS-Game/MyWorld.class | Bin 2108 -> 2191 bytes SMIMS-Game/MyWorld.java | 2 ++ SMIMS-Game/Player.class | Bin 3818 -> 4165 bytes SMIMS-Game/Player.ctxt | 12 +++++---- SMIMS-Game/Player.java | 24 +++++++++++++----- SMIMS-Game/images/herz.png | Bin 0 -> 869 bytes SMIMS-Game/project.greenfoot | 46 ++++++++++++++++++++--------------- 13 files changed, 111 insertions(+), 30 deletions(-) create mode 100644 SMIMS-Game/HealthItem.class create mode 100644 SMIMS-Game/HealthItem.ctxt create mode 100644 SMIMS-Game/HealthItem.java create mode 100644 SMIMS-Game/Healthbar.class create mode 100644 SMIMS-Game/Healthbar.ctxt create mode 100644 SMIMS-Game/Healthbar.java create mode 100644 SMIMS-Game/images/herz.png diff --git a/SMIMS-Game/HealthItem.class b/SMIMS-Game/HealthItem.class new file mode 100644 index 0000000000000000000000000000000000000000..7910582e5252f868cde79e2ee7c85cbacc47d1c7 GIT binary patch literal 728 zcmZ9KOK;Oa6ot>^Q75iR+_Vjk@+#$#xIh-{2ttBNh)5PxDungK86{J>cI8Zh`m>NA z2o{JnKMHXsj*^OnM{{TH`R3ev{pat`UjSa=iHib?4oV)%*bt~3r=L~!@q8k%@j@rs zyc8(5+Wjgjs5)>xY{C<8-zpiKanGnTYKGHH8l5HrqUSQP=Amw3b(2n`u^PUKw&#GU>MSlc~{h zC)5+u-NaQ~b8y|m4eSZj7J}6^-4iab+v+Wq3s(L@w}M*&C0mONA9p<5#Xb?4nkhX~ z%T~}|t9QxAiOJ}(+wN0(lnxc^40WR3P0t1@`ydA~Pa0tw$+#~wZR6!($&59N^1^lV zy7VU_`g5W*j#)JObH3;m+ZyJbVvc)~PP0h8(Ux6b%b(g}vCmc(I8DKi)8Sg=p5x?t zkI{49+B+}!4iRkC{BLl+FfQPLtNj6hDoWJew^?~E9^fG(fk!LOGe(wE4(7P>KcGfH z{Su(O1OTlS;1iA6$M%ATKS!hZ1I+?{!w(OGuW%YS=eWJb)|d=5IG1fsc4vWZ=JF-l Pr{gw)g{wp67V!8V;~|FQ literal 0 HcmV?d00001 diff --git a/SMIMS-Game/HealthItem.ctxt b/SMIMS-Game/HealthItem.ctxt new file mode 100644 index 0000000..e664fe0 --- /dev/null +++ b/SMIMS-Game/HealthItem.ctxt @@ -0,0 +1,8 @@ +#BlueJ class context +comment0.target=HealthItem +comment0.text=\r\n\ Write\ a\ description\ of\ class\ HealthItem\ 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() +comment2.params= +comment2.target=void\ collect() +numComments=3 diff --git a/SMIMS-Game/HealthItem.java b/SMIMS-Game/HealthItem.java new file mode 100644 index 0000000..a927d50 --- /dev/null +++ b/SMIMS-Game/HealthItem.java @@ -0,0 +1,21 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +/** + * Write a description of class HealthItem here. + * + * @author (your name) + * @version (a version number or a date) + */ +public class HealthItem extends PowerUps +{ + int duration = 60*60; + public void act() + { + touchedByPlayer(); + } + + @Override void collect(){ + Player player = getIntersectingObjects(Player.class).get(0); + player.reveivePowerUp(duration, "Heal"); + } +} diff --git a/SMIMS-Game/Healthbar.class b/SMIMS-Game/Healthbar.class new file mode 100644 index 0000000000000000000000000000000000000000..e21b03dd9cd46ced21c920f875646869c9a414e5 GIT binary patch literal 1374 zcmaJ>+fEZv6kVr<4xJ8ATDhs92xtpRQM@2U6e`fla4`^w@xdJ0V>>X+keLI9Kk+vt z1|lZLXFtlg=OQgae3*0DXRUpo{pnBWobJM zv1!9H`gV%nCy~ zlhy0`ePLcf2iaIN`H^r`q;X9_r-m+cU+^VVppvfD?Hy5;F2i6(-{FTmXL75WE12AM z^VvXhAPqC88?MYJ(2MH|ZfLlPK87}*aQ;j&kwS*fOetjgx&jO2*)4{iy1$EmGgI2* zRS`!L0~+pNklYWVW?-chWp!A?UEE{n-s8KXU|VG_w+vaMlPkI9x&DvAb?F#ZH6KS7 zBML?}+{c3p;TLSvD@F5Gv9vMI(9w`Z|H-H3G>m(^<~e<~u%x0NkG!HzFibXPDl}HQ zq~nqxDEAW$Pw|ZE=nCma&d`@>z+OyCKD)`#RIn?80?-XhtQ_oZ3ul9GngCH&p&_5la?gpZuCPR$YNxJ1|XS6quoPvF!Lj=!h z^`3z^rfAgy0P>io8^eop@&w%i@(GkW*&9kgE1GD8T%~}9579j9CKMk#K5_yrl{`Tz z`VBo1{6tb8`Huc~qhE3R3`0P&=NOq|jGf})2_DyNwNX4k2aTQ-#gg{zbp<*@htuf8 h3|^AOC|(gZLUVJD_7;-N(^tR}-Bdd1Siu^4{{TA(OlJT9 literal 0 HcmV?d00001 diff --git a/SMIMS-Game/Healthbar.ctxt b/SMIMS-Game/Healthbar.ctxt new file mode 100644 index 0000000..e8b2d68 --- /dev/null +++ b/SMIMS-Game/Healthbar.ctxt @@ -0,0 +1,8 @@ +#BlueJ class context +comment0.target=Healthbar +comment0.text=\r\n\ Write\ a\ description\ of\ class\ Healthbar\ 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() +comment2.params= +comment2.target=void\ draw_health() +numComments=3 diff --git a/SMIMS-Game/Healthbar.java b/SMIMS-Game/Healthbar.java new file mode 100644 index 0000000..bfac032 --- /dev/null +++ b/SMIMS-Game/Healthbar.java @@ -0,0 +1,20 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +/** + * Write a description of class Healthbar here. + * + * @author (your name) + * @version (a version number or a date) + */ +public class Healthbar extends Actor +{ + public void act() + { + draw_health(); + } + + public void draw_health(){ + Player player = getWorld().getObjects(Player.class).get(0); + setImage(new GreenfootImage("Health:" + player.health, 24, Color.WHITE, Color.BLACK)); + } +} diff --git a/SMIMS-Game/MyWorld.class b/SMIMS-Game/MyWorld.class index e1c9b0283e6112082df26155ff7c6decf232a65c..f6c7f757236946a8d359e65c34c2ae640447cc31 100644 GIT binary patch delta 1097 zcmZ`%$xc&I06mwMzEVnfg#a}`fhbZRle`KlgG`n|=0UUqN}(-fkeXU_W73t0aiJ#9 z6+2?0F>ynbL2BFzF5Hs1)15y-JgOdF7X5RPg=N15eJGGHB#=Aq4bS^+5uGdr z9@L(seYR%=kMAjv*`K_0ljbr6M7_3VC=nytuAxSZYJUuc6=TfF3c;}$jq0wouLAMdcG*YbaD=D52>xn|QT@1~V-yvbqVE;vsJIahB6eAg5&= zd8hX#uxslmAlB+h-$r|aNH&oviQ40+d`LKY3ctQi%^2JsS=~nW|KJ{v?AykT6j+be z06p3+*f=)vip{)s3$htT8QM^R4%DHOh#LdwX0*LV;>>d;U zSN8r~J`kU~M8%EnCWq_A$4Cex=eTs+f?h&KUIcY}ng`^bT1H6PEM@ zrGHKxEC}(Mrs#4S4%S!B;+!l@#a!G#K5NfLKBau|%3LW{j7W24a8;#^^YJIhSHVS+ zs+7xG!`T=H>1#OYOWT)9$MlpE+5tM4Cx4LN3pj^GrnJnIR#LR{$nTG9t0%Q9bnO7S H(lGxQ4n5O0 delta 1015 zcmZuvSx*yD7(KUBm|6xq1)&(Aga`qLeQ;x^Ae$_*C^D{8T98E{O?@-z6N&nuCYLAT z3!0etNCaxEF}?{t=-=>H5YM!v)a7CB-1*M^zH{z5^V0iScYiFW_E_tS*J;qKhkGyIilKK|T>B&L$0}d@WAroWpq)7c^YNCHYl!iw-Fqr(*5s z(vXF20cZ8l*=Yr0{hf+l0dG$v99&*}v@pIBj7H~IBM;r^L6?et0ngOh;&M2Yf%MtP z5LJw4s2GG##fU)uwP0i+9JOa17V7?Z!0`rfO&Vj)G@YYsHz z;UtRSLkZV$Ry7E&rI^4Z-wxvWtc(Fd!pXY>Kc(gTk-MEl?P)hrCv2-(z%m1_oQgEN8hvFE>fNdic*hcol z%e949Y^9BD@Sp?b=tLE|(L`g~(2G&@(Y^sJV~F+*<2frE?0%2w34Ea2`*is@$AhCJ z?sBjT*;SRLe!rg%@~`H~RPl^-4!)b|q`HZU1P1Bjl@X)HD{ASOTvy9uwmLtf00UDQ zm4_ku8BZmnsm48+2qsAjIm*KytClr8rsfQK(o~;dwINOY^oZIdb?zq4Brr_s(KNMg y&ML_uWu?nEb*v#o4Po-kQ^Nu(@PH02(V>+L4F%+xO=>Xz)KFz>2vVB^_kRPE`LbdF diff --git a/SMIMS-Game/MyWorld.java b/SMIMS-Game/MyWorld.java index 2d78cda..32b7712 100644 --- a/SMIMS-Game/MyWorld.java +++ b/SMIMS-Game/MyWorld.java @@ -50,6 +50,8 @@ public class MyWorld extends World plattform2.setLocation(320,367); plattform2.setLocation(312,371); plattform2.setLocation(308,382); + Healthbar healthbar = new Healthbar(); + addObject(healthbar,50,50); } public void act() diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index f00f6aa7bcbf10ee419c06cd3ec749af5198d946..d43e31d96b0c26706a675318cfbf2b90f26b44f6 100644 GIT binary patch literal 4165 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 Ee}TN8wEzGB literal 3818 zcmZu!d4Chv6+L6g8c7~62n!6h2?>zcDqvElhT4#nB>{nLTowZkX*_7gl0ed!(a6Sx zq@ig_QfS(=>Ecpo32mJg(k)mR=#uVj_!j*R{iADo?vrfEr1o##o4NPByPkXB(+B^( z`)dH(aX*Y2_;mOU)FPmvG3nZNZp?AKuI&lWaWw?CrgLfUNe#Y^&fyS(2jh8f9r^#X--tb4f2H+$9DgSW30yu5;2( zc!lNB=HR@vhYdU;`h!kxx9b#gR+!7z8d!%%HG~pQCX>!9XXyNh@Hz~1 zN}QUq&V=1>k9pg3)`4^~X(DMo*2As)ipY+wsMNx@0mJEk%b7jmD0t=LBENj~DZ8H-`*=~?@3F-T9lIE&-DcL_&sZsT7(3w$V>kBbh#T08ebiD> zv3njbG$X%YMsvqUtmqsTlLrh8&Uz}=X(1>d(w3K!RR;|m!eI?{l-Tbi%7Civ zh{rpJgE&HTm}1c}10#5riAv}9*;BimNun;=(SOpMFuO8lF4;w3q;tu>&XFLV<0dPJ z=M|RBge|x*4V+L|N)%jTauJqvFq$Fa+w;a8H!D_+8Au|fVHv{}&v~|+7sTe0`%egT z^BUGv>)x3$^ZCBck~IY)yQ@E)_xkE^5~p-z3}iub8BcVGh;r^U~S0vn3#eOKAwOvW&s|LP+3mOc@ zcEBm*?Kqo|hUJTNFEFTfH(odJMO@^TtgIh$?R?&5&K3cn>|W=HjxVujOYN$_ zpTbuRyos+e;ihGk_At%W7*@@&Pw*GUTNu#s^+i>%V3}|k$V>Q^foTO{ui)kmIg_Sq z<#k-v5U!{fEL<^gRTV@&eb(0TJ>v7}oSmHt<855m@qGh75O&jppk|7g+heo32D{h2tBJO6GitpvZ6NFLyLC;K_8ZgJp>q1G@KMy(M6rD(!E?3#^4#)GHEJZsR zYv+T+;5e&Gii?FV;!BlA4Sud>n7l|H;H3Q62EM*`BUTbF0?9BczZ6S&hA-ur+>Es}uM^AhQ?4>f zs_-+&eht4^FylUaiZ>Q3V$Bf_kMW7|*}!KLpKd-q{!xy-MLc;8_4lyz*lj#Lhi6FZ zzk;Z&CU3tiEaJcn+JsRi`mJj)V*WBuwEG~|_n@9*D+AI->)ZLYinc$5C|1*hHMD#! zy73r#(Sd$`9Y+i{?*J8V#>(EjM>)0db+@!IqP#)S9f|K`*|F}(@End#Gn~q*TWGe* z#zc-kzz`?JgNl{QC>eO1km#mWJp{)V-ZFZttmv+?!jGC2Vgzq0Wh0&|CwW!mGfG!W z>=sr}V@Ztjs8^lSQdA<$CfGC^d4Fu-ouVDPs&uWY(#5Q`Q#kKHB~{uDnktyRD^6^U z9lJ%q+``IHQ9=se+ef#l7_`yFSR_$|J?QK4Z@7cBhThs0wRgZ{VHyQ_V;g!OiQd49 zKoMtTm@4AM+KknsD`7>vtiDHkf~_RXe}qKKWo(LuqWX1oMuSoP8Xi$fqq4EI&Jz6s zXn&7?27#FmFT|n*xq`M|fnzVPuD~986zAJsLS!HBjROqqAU)pCw;?>w%Z-BrILG_U zn>fr~KFsEPgt;?GeB3ZBIXmxX!p_g(^ZnW!UYo|Id$`1Edt-pn>s`-5>WUcs z@_Mc*;%jRBMiJjE^$iMW3bRI~X*3Dxd z68Sd4b_d_laD~{9e0ToqDjF-@#DCLwlfp`cP%69}TY|&vpQcQgjbNgx7-Ch$z`|>* zqgMU^DC`M5KP1v0!XzjKb&&iUWr+`1w1 z!y?|9MwC@JgT@V!8|pK_vWWUi`?knFKJwSfM_gJp!-_6jE^dwTy`HEUjkVIfiZ3e_ zm|r3IUuD)WFuSk8!|ObFE-vJjmX`gIw?8Qu%iEvv7wVPVHX-mItkv= getWorld().getHeight()){ @@ -106,16 +110,20 @@ public class Player extends Actor } } - public boolean collision(){ + public void collision(){ if (getIntersectingObjects(Projectile.class).size()>0 || getIntersectingObjects(Enemy.class).size()>0) { - Greenfoot.setWorld(new GameOverWorld()); - return true; + health--; + getWorld().removeObjects(getIntersectingObjects(Projectile.class)); + getWorld().removeObjects(getIntersectingObjects(Enemy.class)); + } - else - { - return false; + } + + public void checkHealth(){ + if (health <= 0){ + Greenfoot.setWorld(new GameOverWorld()); } } @@ -135,6 +143,10 @@ public class Player extends Actor currentJumpStrength = defaultJumpStrength; currentJumpStrength += jumpBoostStrength; jumpBoostDuration = duration; + case "Heal": + if (health < MAX_HEALTH){ + health++; + } } } } diff --git a/SMIMS-Game/images/herz.png b/SMIMS-Game/images/herz.png new file mode 100644 index 0000000000000000000000000000000000000000..cee642272495a4f389b67a959d31e832abc8fc08 GIT binary patch literal 869 zcmV-r1DgDaP)d&Uru1sVkSubvo3P#%8b!oCi0-1O9uKUvJJkhC#+e zPy{EyRd5Sj2FJi=Fh1`Xx`Q`?UN8*G8tDBSE<*UuBya)z%*pr;dPvwx1YcMU-sBv- zl0mS^LZTJCvdnk^mgkD#L!-e-%Y#=^0^>9S4d95ue>#gHa2SlziJbA2Na)pwoDP&x zsw#pvRt5@4*jPnkMc|Cqe?;)YSTGPcM1ct@i80_=;EX4rF)eaDa6rPTl*mz`jDvqf z)ZfeOkWdJn(6hmG!HgeZDv1<@0upwD9l{w~NaUh$2o0*&gflLYNS|=XBStdg9*NkF zuC}~mBr{%;$Xnr%kzkNS?nF?;m%fnGl3H?(L^>iU;!6jKY>1$UFY8I9C4wTp%uD7$ z_ai9dN`HFNSd5^ME8Ei|1@Jn8Qnt`?yimEY+8;qNTRN+)5T}7}5tK89x;AC4*}Ebr zXv!ho<^%0;^hZ!K51LIEwEJ54z+&(#g0flAX5J#x4Z7|K3TJV^W~Y%Z$B!c@UCBex zU@XEi3&5uc$|rmTEmnKKDVa4&Zui3m>aa@J)nv1|Jpz$Ec|A>c&Ux+rwLg zWqj^