private GreenfootImage left = new GreenfootImage("left.png");
private GreenfootImage right= new GreenfootImage("right.png");
private int ySpeed;
private int apexTimer;
/**
* Act - do whatever the FlappyBird wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
if (Greenfoot.isKeyDown("right") == true)
{
setLocation(getX() + 4, getY());
setImage(right);
}
if (Greenfoot.isKeyDown("left") == true)
{
setLocation(getX() - 4, getY());
setImage(left);
}
int groundLevel = getWorld().getHeight() - getImage().getHeight()/2;
boolean onGround = (getY() == groundLevel);
if (!onGround) // in middle of jump
{
if (ySpeed == 0 && apexTimer > 0) apexTimer--; // run apex timer
if (ySpeed == 0 && apexTimer > 0) return; // apex timer still running
ySpeed+=3; // adds gravity effect
setLocation(getX(), getY()+ySpeed); // fall (rising slower or falling faster)
if (getY()>=groundLevel) // has landed (reached ground level)
{
setLocation(getX(), groundLevel); // set on ground
Greenfoot.getKey(); // clears any key pressed during jump
}
}
else // on ground
{
if ("up".equals(Greenfoot.getKey())) // jump key detected
{
ySpeed = -15; // add jump speed
setLocation(getX(), getY()+ySpeed); // leave ground
apexTimer = 5; // set apex timer (adjust value to suit)
}
}
if (Greenfoot.isKeyDown("space") == true)
{
addObject(attack(), getX()+1,getY());
}
}
}
