For some reason my enemies bullet is not being removed at the world edge. Can someone please help, here is the code for it...
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class DarkPower here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class DarkPower extends Actor
{
public DarkPower(int rotation)
{
setRotation(rotation);
}
/**
* Act - do whatever the DarkPower wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
move(2);
tryToEat();
}
public void tryToEat()
{
if (canSee(Starfighter.class) )
{
eat(Starfighter.class);
gameOver();
}
if (canSee(Starfighter2.class) )
{
eat(Starfighter2.class);
gameOver();
Label1 label1 = new Label1();
getWorld().addObject(label1, 450, 350);
}
if (canSee(Starfighter3.class) )
{
eat(Starfighter3.class);
gameOver();
Label2 label2 = new Label2();
getWorld().addObject(label2, 450, 350);
} else {
if(atWorldEdge())
{
getWorld().removeObject(this);
}
}
}
public void gameOver()
{
Greenfoot.stop();
GameOver gameover = new GameOver();
getWorld().addObject(gameover, getWorld().getWidth()/2, getWorld().getHeight()/2);
Greenfoot.playSound("gameover.wav");
Greenfoot.stop();
GameOver2 gameover2 = new GameOver2();
getWorld().addObject(gameover2, getWorld().getWidth()/2, getWorld().getHeight()/2);
Greenfoot.playSound("gameover.wav");
}
public boolean atWorldEdge()
{
if(getX() < 10 || getX() > getWorld().getWidth() + 10)
return true;
if(getY() < 10 || getY() > getWorld().getHeight() + 10)
return true;
else
return false;
}
public boolean canSee(Class clss)
{
Actor actor = getOneObjectAtOffset(0, 0, clss);
return actor != null;
}
public void eat(Class clss)
{
Actor actor = getOneObjectAtOffset(0, 0, clss);
if(actor != null) {
getWorld().removeObject(actor);
}
}
}

