2014-12-17 11 views
3

을에 다른 클래스에서 객체의 이름을 얻는 방법 보트 (어느 정도의 보트가 그림 인 &).내가 정의하는 생성자가 세계 클래스와 보트 클래스와 보트 클래스 안쪽 종료 클래스</p> <p>을 내가 Greenfoot IDE를 사용하고 그리고 난이 자바

보트 코드 : 종료 클래스 내부

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

나는 다른 종료의

종료 정의하는 생성자가 : 월드 클래스에서

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

내가 추가 한 3 개 개의 보트를 & 다른 매개 변수를 가진 greenfoot의 소위 "세계"에 대한 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 배를 지정할 수 wan't 것입니다. 더 명확하게하기 위해 보트 1은 "geel"Exit (또는 exit1)과 만 상호 작용할 수 있습니다.

이미 일부 코드를 시도했지만 제대로 작동하지 않습니다.

시도 코드 :

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

가 나는 경우이 작업을 할 수 있다고 생각하지만, 그것을 위해 내가 월드 클래스 또는 보트 클래스의 객체를 검색 할 필요가 나는 방법을 모른다 해? 내가

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

을 시도하지만 그

누구나 어떤 제안 (자신의 객체 (변수) 이름 포함) 3 개 가지 보트를 반환하지 않습니다?

PS 그것은 더 많은 코드입니다하지만 난 단지 내가 일부를 시도한 반응 후

이 문제에 대한 necesarry있는 코드를 보여하지만 난

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

가 지금은 붙어 again` 붙어 다시 내 공개 무효 행동에 올바른 매개 변수를 사용하여 메서드를 호출하는 방법을 모릅니다. 이 같은 보트 인스턴스를 만들 수 있도록

답변

1

당신은 보트 생성자에 출구를 추가 보트 클래스

private Exit exit; 

에 필드로 나가기를 추가 할 수 있습니다.

Boat boat1 = new Boat(exit1, 10,1,700);