Merge remote-tracking branch 'origin/main'

# Conflicts:
#	SMIMS-Game/Player.class
#	SMIMS-Game/Player.ctxt
#	SMIMS-Game/Player.java
#	SMIMS-Game/project.greenfoot
This commit is contained in:
2026-09-15 10:29:31 +02:00
19 changed files with 277 additions and 57 deletions
+66 -23
View File
@@ -8,44 +8,87 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
*/
public class Player extends Actor
{
int velocityY = 0;
int speed = 5;
private int speed = 4;
private int jumpStrength = 12;
private int gravity = 1;
private int verticalSpeed = 0;
private boolean onGround = false;
public void act()
{
player_movement();
collision();
moveLeftAndRight();
jump();
fall();
}
public void player_movement(){
if (Greenfoot.isKeyDown("D")){
setLocation(getX()+speed, getY());
// Bewegung nach links und rechts
private void moveLeftAndRight()
{
if (Greenfoot.isKeyDown("a"))
{
setLocation(getX() - speed, getY());
}
if (Greenfoot.isKeyDown("A")){
setLocation(getX()-speed, getY());
if (Greenfoot.isKeyDown("d"))
{
setLocation(getX() + speed, getY());
}
}
public boolean onGround(){
int height = getImage().getHeight();
Actor floor = getOneObjectAtOffset(
0,
height / 2 + 1,
Ground.class
);
return floor != null;
// Springen
private void jump()
{
if (Greenfoot.isKeyDown("space") && onGround)
{
verticalSpeed = -jumpStrength;
onGround = false;
}
}
// Schwerkraft und Boden-Kollision
private void fall()
{
verticalSpeed += gravity;
int newY = getY() + verticalSpeed;
// Prüfen, ob wir auf Ground landen
setLocation(getX(), newY);
Actor ground = getOneIntersectingObject(Ground.class);
if (ground != null)
{
// Wenn wir fallen, stehen wir auf dem Ground
if (verticalSpeed >= 0)
{
int groundTop = ground.getY() - ground.getImage().getHeight() / 2;
int characterHalfHeight = getImage().getHeight() / 2;
setLocation(getX(), groundTop - characterHalfHeight);
verticalSpeed = 0;
onGround = true;
}
}
else
{
onGround = false;
}
}
public boolean collision(){
if (getIntersectingObjects(Projectile.class).size()>0)
{
Greenfoot.setWorld(new GameOverWorld());
return true;
}
return true;
}
else
{
return false;
return false;
}
}
}