java - 如何从Java中的不同类获取对象的名称

标签 java class 2d-games greenfoot

我正在使用 Greenfoot IDE,我有一个 World Class 和一个 Boat class 以及一个 Exit class

在 Boat 类中,我有一个构造函数来定义船(它是什么类型的船以及哪张图片)。

船号:

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 类中,我有一个构造函数,它定义了不同的 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;
}
}

在世界级中,我添加了 3 艘不同的船和 3 个不同的导出到所谓的具有不同参数的 greenfoot“世界”。现在我有 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”导出(或导出 1)交互。

我已经尝试了一些代码,但我无法让它工作。

尝试过的代码:

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

我想我可以让它工作,但为此我需要从 World 类或 Boat 类中检索对象,我不知道该怎么做?我试过了

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

但这并没有返回 3 个不同的船(包括它们的对象(变量)名称)

有人有什么建议吗?

p.s 这是更多的代码,但我只展示了这个问题所必需的代码

在 react 之后我尝试了一些但我又卡住了`

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

现在我又被卡住了,我不知道如何在我的 public void act 中使用正确的参数调用方法。

最佳答案

您可以将 Exit 添加为 Boat 类中的一个字段

private Exit exit;

将导出添加到 Boats 构造函数,以便您可以像这样创建 Boat 实例。

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

关于java - 如何从Java中的不同类获取对象的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526525/

相关文章:

java - OpenJDK 11 错误 "Can not initialize cryptographic mechanism"

php - 完成抽象类的常见做法是什么?

java - 将 A* 路径查找更改为 HPA* - Java

java - 在java中加载游戏的图像

android - Android 上的 Pygame/Kivy?

java - 服务器没有从数据库中读取更新的数据

java - 将对象克隆到列表中,并为每个项目更改多个值

java - 向 TitleAreaDialog 添加一个关键监听器

javascript - 错误 TS1112 : A class member cannot be declared optional

visual-studio - 为什么在创建新的 C++ 类时会创建两个文件(.h 和 .cpp)?