public void act() { Keys(); fall(); arrow(); checkFall(); onGround(); //onGround1(); //onGround2(); collisionOffset(); //collisionOffset2(); //pickupstick(); checkCeiling(); } private void fall() { setLocation( getX(), getY()+ vSpeed); if( vSpeed<= 10) { vSpeed = vSpeed + gravity; } isJumping = true; } private void checkFall() { if( onGround() == true ) { vSpeed = 0; } else { fall(); } } private void jump() { vSpeed = jumpHeight; isJumping = true; fall(); } private void Keys() { if(Greenfoot.isKeyDown("right")) { setLocation(getX()+9, getY()); animateR(); } if(Greenfoot.isKeyDown("left")) { setLocation(getX()-9, getY()); animateL(); } if(Greenfoot.isKeyDown("space") && isJumping ==false) { jump(); } } public void animateR() { if (getImage() == right1) { setImage(right2); } else if(getImage() == right2) { setImage(right3); } else { setImage(right1); } } public void animateL() { if(getImage() == left1) { setImage(left2); } else if( getImage() == left2) { setImage(left3); } else { setImage(left1); } } private void moveToGround(Actor ground) { int groundHeight = ground.getImage().getHeight(); int newY = ground.getY() - ( groundHeight + getImage().getHeight() ) /2; setLocation(getX (), newY ); isJumping = false; } private void jumpy() { if (getWorld() instanceof Instructions) { onGround(); } } private boolean onGround() { int spriteHeight = getImage().getHeight(); int lookForGround = spriteHeight/2; Actor ground = getOneObjectAtOffset( 0 ,lookForGround, Platform.class ); if( ground == null ) { isJumping = true; return false; } else { moveToGround(ground); return true; } } private boolean onGround1() { int spriteHeight = getImage().getHeight(); int lookForGround = spriteHeight/2; Actor ground = getOneObjectAtOffset( 0 ,lookForGround, Floor1.class ); if( ground == null ) { isJumping = true; return false; } else { moveToGround(ground); return true; } } private boolean onGround2() { int spriteHeight = getImage().getHeight(); int lookForGround = spriteHeight/2; Actor ground = getOneObjectAtOffset( 0 ,lookForGround, Platform2.class ); if( ground == null ) { isJumping = true; return false; } else { moveToGround(ground); return true; } } private void bopHead( Actor ceiling) { int ceilingHeight = ceiling.getImage().getHeight(); int newY = ceiling. getY() + (ceilingHeight + getImage().getHeight())/2; setLocation(getX(), newY ); isJumping = false; vSpeed = 3; } private void collisionOffset() { Actor rightWall = getOneObjectAtOffset( getImage().getWidth()/4 , 0, Platform.class); if (rightWall !=null) { setLocation(getX()-5, getY()); } Actor leftWall = getOneObjectAtOffset( -getImage().getWidth()/4 , 0, Platform.class); if (leftWall !=null) { setLocation(getX()+5, getY()); } Actor topWall = getOneObjectAtOffset( 0 , -getImage().getHeight()/4 , Platform.class); if (topWall !=null) { setLocation(getX(), getY()); } } private void collisionOffset2() { Actor rightWall = getOneObjectAtOffset( getImage().getWidth()/4 , 0, Platform2.class); if (rightWall !=null) { setLocation(getX()-5, getY()); } Actor leftWall = getOneObjectAtOffset( -getImage().getWidth()/4 , 0, Platform2.class); if (leftWall !=null) { setLocation(getX()+5, getY()); } Actor topWall = getOneObjectAtOffset( 0 , -getImage().getHeight()/4 , Platform2.class); if (topWall !=null) { setLocation(getX(), getY()); } } private void worldEnd() { if (getY() == 649) { setLocation(120, 75); } } private boolean checkCeiling() { int spriteHeight = getImage().getHeight(); int lookForCeiling = spriteHeight/2; Actor ceiling =getOneObjectAtOffset( 0, -lookForCeiling, Platform.class); if( ceiling != null) { bopHead(ceiling); return true; } else { return false; } } private void arrow() { if(getWorld() instanceof Instructions) { if (isTouching(Arrow.class)) { Greenfoot.setWorld(new level1() ); } } } //private void pickupstick() //{ //if(getWorld() instanceof level1) //{ //if (isTouching(Stick.class)) //{ //setImage(stick); //} // } //} }