package Main; import org.newdawn.slick.Animation; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.SpriteSheet; import org.newdawn.slick.geom.Rectangle; public class Player { SpriteSheet robot; Animation walk_right,walk_left,jump_left,jump_right,stand; int xPos,yPos; float xSpd,ySpd; private State state; boolean isRunningRight, isRunningLeft,isStandingRight, hasFloorContact, isLanded, ballhit;//checks char move;//Bewegungsanimationswähler Rectangle collisionarea;//Kollisionsviereck an den Füßen des Roboters void init(GameContainer gc, State gameState , int yPos) throws SlickException{ this.yPos = yPos; this.state = gameState; robot = new SpriteSheet("Main/robot_sheet_good.png",50,100); walk_right = new Animation(robot,0,0,6,0,true,200,true); walk_left = new Animation(robot,0,1,6,1,true,200,true); jump_right = new Animation(robot,0,2,5,2,true,200,true); jump_right.setLooping(false); jump_left = new Animation(robot,0,3,5,3,true,200,true); jump_left.setLooping(false); stand = new Animation(robot,0,4,2,4,true,200,true); xPos = 400; ySpd = 0; xSpd = 0; collisionarea = new Rectangle(xPos-15, yPos+20, 35, 20); ballhit = false; } void render(GameContainer gc, Graphics g)throws SlickException{ switch(state.currentState){ case "titel": break; case "start": case "paused": //Auswahl der zu rendernden Animation switch(move){ case 0: stand.draw(xPos-24,yPos-50);break; case 1:/*Run right*/walk_right.draw(xPos-25, yPos-50); break; case 2:/*Run left*/walk_left.draw(xPos-25, yPos-50); break; case 3:/*jump right*/jump_right.draw(xPos-25, yPos-50);break; case 4:/*jump left*/jump_left.draw(xPos-25, yPos-50);break; } break; } } void update(GameContainer gc, float _delta)throws SlickException{ //update der Position des Quadrates collisionarea = new Rectangle(xPos-15, yPos+20, 35, 20); switch(state.currentState){ case "paused":break; case "start": this.xPos += this.xSpd * _delta; this.yPos += this.ySpd * _delta; if(!hasFloorContact)//Gravitation this.ySpd += 750.0f * _delta; break; } } void setFloorContact(boolean status){ this.hasFloorContact=status; } Rectangle getCollisionarea(){ return collisionarea; } }