Как получить имя объекта из другого класса в 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);