Допустим, графика Мир , допустим, API из Мир и Актер , и я построил объект из новое имя класса Еда , которое присуще Актер , но в определенных ситуациях мне нужно, чтобы объект исчез из моего мира.
какой должен быть хороший способ сделать это?
Я пробовал это:
public void killFood ()
{
getWorld().removeObject(this); // >>>>>Kill any object that inherate from Food and operate this method.
}
Но это не убило какой-либо предмет из класса, который присущи из еды ... почему?
Я завернул его (в классе Food):
public void act()
{
if (canMove())
move();
else
killFood();
}
public boolean canMove()
{
World myWorld = getWorld();
int x = getX();
int y = getY();
y--;
// test for outside border
if (x >= myWorld.getWidth() || y >= myWorld.getHeight())
return false;
else if (x < 0 || y < 0) // if out of the 1st quarter
return false;
return true; // if inside 1st quarter & borders it can be move.
}
Но объект не исчез ... почему?
Спасибо !!
=============================================== ===========================================
РЕДАКТИРОВАТЬ: метод canMove и класс грибов
public boolean canMove()
{
World myWorld = getWorld();
int x = getX();
int y = getY();
// test for outside border
if (x >= myWorld.getWidth() || y >= myWorld.getHeight()) {
return false;
}
else if (x < 0 || y < 0) {
return false;
}
return true;
}
public class Mushroom extends Food
{
private final int NEED_TOGO_LEFT = 3;
private int mushroomGotDown=0; // counter for regular +1 down steps
public void move()
{
mushroomGotDown++;
// if mushroom didn't got down 2 times, go down one time.
if (mushroomGotDown != NEED_TOGO_LEFT)
setLocation(getX() , getY() + 1);
else // mushroom got down twise, third will be 1 step left.
{
setLocation(getX() - 1 , getY());
mushroomGotDown=0;
}
}
} // end of class Mushroom