Как получить имя объекта из другого класса в Java

Я использую Greenfoot IDE, у меня есть класс World Class, класс Boat и класс Exit

Внутри класса Лодка у меня есть конструктор, который определяет лодку (что это за лодка и какая картинка).

Код лодки:

public class Boat extends Actor
{
    private int size;
    private int speed;
    private int slow = 1;
    private boolean leeg = false;
    private int id;
    private int time;

    public void act() {
         MoveBoat();
         MoveMouse();
         ExitHarbor(time);
         Dock();
         Colission();


    }
    public Boat(int newSize, int i, int t) {
        size = newSize;
        id = i;
        time = t;
        setImage(id);
    }

    public void setImage(int i) {
        if (!leeg) {
            setImage(new GreenfootImage("Boat"+i+".png"));
        }
        else {
            setImage(new GreenfootImage("Boatleeg"+i+".png"));
        }
    }
}

Внутри класса Exit у меня есть конструктор, который определяет различные

Выход:

public class Exit extends Actor
{
    private String color;
    private int points;

    /**
     * Act - do whatever the Exit wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public Exit(String kleur) {
        color = kleur;
        setImage(kleur);
    }

    public void setImage(String kleur) {
        //Game1 game = getWorld().getObjects(Boat.class);
        setImage(new GreenfootImage("exit"+kleur+".png"));
    }
    public String getColor()
{
    return color;
}
}

В классе World я добавил 3 разных лодки и 3 разных выхода в так называемый "мир" зеленокожих с разными параметрами. Теперь у меня есть 3 разных лодки и 3 разных выхода.

Мир:

public class Game1 extends World
{

    /**
     * Constructor for objects of class Game1.
     * 
     */
    public Game1()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(900, 900, 1); 
        prepare();
    }

    public void prepare()
    {
        Exit exit1 = new Exit("paars");
        addObject(exit1, 885, 615);
        Exit exit2 = new Exit("groen");
        addObject(exit2, 885, 472);
        Exit exit3 = new Exit("geel");
        addObject(exit3, 885, 340);
        Boat boat1 = new Boat(10,1,700);
        addObject(boat1, 500,61);
        Boat boat2 = new Boat(20,2,500);
        addObject(boat2, 800,61);
        Boat boat3 = new Boat(30,3,300);
        addObject(boat3, 650,61);
}
}

Проблема, с которой я столкнулся на данный момент, заключается в том, что я не хочу указывать 1 лодку на 1 выход. Чтобы очистить это больше, я не хочу, чтобы лодка 1 могла взаимодействовать только с выходом "geel" (или exit1).

Я уже попробовал код, но не могу заставить его работать.

Пробный код:

if (id == 1 && "geel".equals(exit.getColor()))

Я думаю, что смогу заставить его работать с этим, если, но для этого мне нужно извлечь объекты из класса World или из класса Boat, я не знаю, как это сделать? Я старался

Actor boat = (Actor)getWorld().getObjects(Boat.class).get(0);

Но это не возвращает 3 разных Boats (включая их имена объектов (переменных))

Есть какие-нибудь предложения?

PS Это больше кода, но я только показал код, необходимый для этой проблемы

после реакций я попробовал некоторые, но я снова застрял`

    public void ExitBoat(Exit exit, int size) {
    this.exit = exit;
    System.out.println(exit);
   /* if(exit == exit1 && size == 10) {
        System.out.println("jdjdf");
    }*/
}
    public Boat(Exit uitgang, int newSize, int i, int t) {
    exit = uitgang;
    size = newSize;
    id = i;
    time = t;
    setImage(id);
}

теперь я снова застрял, я не знаю, как вызвать метод с правильными параметрами в моем публичном акте void.

1 ответ

Решение

Вы можете добавить Exit в качестве поля в классе Boat

private Exit exit;

добавьте выход в конструктор Boats, чтобы вы могли создавать подобные экземпляры Boat.

Boat boat1 = new Boat(exit1, 10,1,700);
Другие вопросы по тегам