From 44f7382b6fe2284878eb7907a1831c4e412c2085 Mon Sep 17 00:00:00 2001 From: Jonas Date: Tue, 15 Sep 2026 10:30:38 +0200 Subject: [PATCH] =?UTF-8?q?Der=20Spieler=20kann=20nun=20h=C3=B6her=20sprin?= =?UTF-8?q?gen=20und=20wird=20nicht=20auf=20einen=20Boden=20gesetzt,=20wen?= =?UTF-8?q?n=20er=20diesen=20von=20der=20Seite=20ber=C3=BChrt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMIMS-Game/Player.class | Bin 1563 -> 1688 bytes SMIMS-Game/Player.java | 35 +++++++++++++++++++++++------------ SMIMS-Game/project.greenfoot | 12 +++--------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index ff9a79d8785e72a9b61bb93f2b512732c93c11e8..17b5d20f22bc809f342e093861b93c7a6ed86544 100644 GIT binary patch delta 472 zcmZ9I&q^C%6vcltnMp8=G$b7tH4D2C!kDOplGZd9jkZRqO5>k45!!@Aagh)RS(HMt zP;k>tAYCY~q)$+)Q>frh7k!PshjM0^ zwqI>mYn|P8zSZfpng-EUqrUJzX^AZL{+VA!-eY2Dz?k?Id|e;7lBRVU>93$IQD#|a$f0-n0H2`a;{&DaI7-x2~Na)(q1&{lUqw& zv)AvO@FC?hr#J8O(r(l<*1+VmGN>yVdsM`I5p;vD^@D_KyVfa>`%|3>w{N*q^cwcq zL75S)GpV(viIOJH6UNDq){bC;wkDhEpwX4nw2H6tm7^Gbm!4c25s^mn!ffyMdEwvZ`VQ?_>mcq4^F S;D)YYgfLA@!Is3Cly3n_C|Y0u delta 374 zcmXAlOG`pg6otQgy>?T~BwvI?H8QSJVJ|SP>_HY;R8~3=G_|Z8iF5l4;Uw?}G?w%R z4Vu-UasMWY_B9Us>~;29d!Mt;<4DKl{QP}=15)I>&Ue-4E!RqoQn^`eq)YXyboJ)C z)@*;P_x=JZiU=o-7ZgM9qZ=Mq`@uF7axlawIzAkX<0K<0*T44p%a&DI3L17P-WmBG zUZaPn*q3ZFC)is|7y=_9lbA6UH%VloA0#cN!)nxILn39eW3N}%M7TeI%i5r6!mm}V zKASa9>l1il*g6Eda-EF>+2gd_l4coUo*)ZMu|${^B0|MTi1VZf*U1Sgu*oG`RN3X0 zy@8cQd3%a!PQ;WoGQg=I&GN$`N0NhNWm%TPY;(rBeAThkov1%l6}OJ633(wUmE0dM C`a(+p diff --git a/SMIMS-Game/Player.java b/SMIMS-Game/Player.java index dbe19ac..a5cb43b 100644 --- a/SMIMS-Game/Player.java +++ b/SMIMS-Game/Player.java @@ -2,10 +2,10 @@ import greenfoot.*; public class Player extends Actor { - private int speed = 4; - private int jumpStrength = 12; + private int speed = 6; + private int jumpStrength = 20; private int gravity = 1; - + private int verticalSpeed = 0; private boolean onGround = false; @@ -40,27 +40,38 @@ public class Player extends Actor } } - // Schwerkraft und Boden-Kollision + // Schwerkraft private void fall() { + int oldY = getY(); + verticalSpeed += gravity; int newY = getY() + verticalSpeed; - // Prüfen, ob wir auf Ground landen setLocation(getX(), newY); Actor ground = getOneIntersectingObject(Ground.class); - if (ground != null) + if (ground != null && verticalSpeed >= 0) { - // Wenn wir fallen, stehen wir auf dem Ground - if (verticalSpeed >= 0) - { - int groundTop = ground.getY() - ground.getImage().getHeight() / 2; - int characterHalfHeight = getImage().getHeight() / 2; + int groundTop = ground.getY() + - ground.getImage().getHeight() / 2; - setLocation(getX(), groundTop - characterHalfHeight); + int characterBottom = getY() + + getImage().getHeight() / 2; + + // Nur landen, wenn der Spieler vorher über dem Boden war + int oldCharacterBottom = oldY + + getImage().getHeight() / 2; + + if (oldCharacterBottom <= groundTop && + characterBottom >= groundTop) + { + setLocation( + getX(), + groundTop - getImage().getHeight() / 2 + ); verticalSpeed = 0; onGround = true; diff --git a/SMIMS-Game/project.greenfoot b/SMIMS-Game/project.greenfoot index f079710..aa644c0 100644 --- a/SMIMS-Game/project.greenfoot +++ b/SMIMS-Game/project.greenfoot @@ -4,21 +4,15 @@ class.Player.image=ppl2.png dependency1.from=PlayerTestWorld dependency1.to=Ground dependency1.type=UsesDependency -dependency2.from=PlayerTestWorld -dependency2.to=Player +dependency2.from=Player +dependency2.to=Ground dependency2.type=UsesDependency -dependency3.from=MyWorld -dependency3.to=Player -dependency3.type=UsesDependency -dependency4.from=Player -dependency4.to=Ground -dependency4.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=4 +package.numDependencies=2 package.numTargets=4 project.charset=UTF-8 publish.hasSource=false