2014-12-17 3 views
3

Я использую Greenfoot IDE и у меня есть World Class и класс лодок и Выход классКак получить имя объекта из другого класса в Java

Внутри класса лодок у меня есть конструктор, который определяет лодка (какой-то лодка - & какой изображение).

Лодка Код:

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 разных выхода.

World:

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); 
} 
} 

Проблема у меня в данный момент является то, что я wan't для указания 1 лодки 1 выход. Чтобы очистить его больше, я не хочу, чтобы лодка 1 могла взаимодействовать только с «Geel» Exit (или exit1).

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

Попробовал код:

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

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

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

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

Любой какие-либо предложения?

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

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

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

Вы можете добавить Выход в поле в классе лодок

private Exit exit; 

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

Boat boat1 = new Boat(exit1, 10,1,700); 
Смежные вопросы