Как мне получить координаты моего подкласса актера, чтобы разместить нового актера в этом месте? - PullRequest
1 голос
/ 08 марта 2020
public void move()
{    
    //if (this.getWorld().getObjects(Marker.class).isEmpty())
    Dog bill = getOneIntersectingObject(Dog.class);
    Marker bone = getOneIntersectingObject(Dog.class);
    if (bone == null); 
    {
        Marker bone= new Marker();
        getWorld().addObject(marker.getX(), marker.getY());
    }
    super.move(1);
}

Я пытаюсь сослаться на местоположение моего текущего подкласса актера (собака), чтобы поместить маркер (кость) другого подкласса в координатах, в которых он расположен.

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете получить координаты актера, вызвав getX() и getY(), как вы делаете это для других актеров.

Если вы хотите вызывать методы для "текущего" актера, вы можете нравится использовать this, например this.getX(). Но это только необходимо , если вам нужно разрешить некоторую неопределенность. Обычно вы можете просто вызвать метод.

public void move()
{    
    Dog bill = getOneIntersectingObject(Dog.class);
    Marker bone = getOneIntersectingObject(Marker.class);
    if (bone == null)
    {
        Marker marker = new Marker();
        getWorld().addObject(marker, getX(), getY());
    }
    super.move(1);
}

Необходимые изменения, как очевидно из показанного фрагмента:

  • Параметр второго getOneIntersectingObject() равен Marker.class, потому что вы похоже, этого хотят.
  • Не ставьте точку с запятой после скобок if. Если вы не удалите его: эта точка с запятой - пустое утверждение, поэтому if не будет иметь никакого эффекта. Блок между фигурными скобками, следующий за ним, всегда будет выполняться.
  • Переименуйте второй bone в marker, чтобы показать свое намерение. (Это дополнительно «затеняет» «внешний» bone, но здесь это не проблема.)
  • Вызовите addObject() с правильными параметрами: объект для размещения (новый маркер), и его координаты (получаются путем вызова getX() и getY()).
...