import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Player here. * * @author (your name) * @version (a version number or a date) */ public class Player extends Actor { private int speed = 4; private int jumpStrength = 12; private int gravity = 1; private int verticalSpeed = 0; private boolean onGround = false; public void act() { collision(); moveLeftAndRight(); jump(); fall(); } // Bewegung nach links und rechts private void moveLeftAndRight() { if (Greenfoot.isKeyDown("a")) { setLocation(getX() - speed, getY()); } if (Greenfoot.isKeyDown("d")) { setLocation(getX() + speed, getY()); } } // 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; } else { return false; } } }