Java 尝试从对象数组列表中查找特定对象

Java 尝试从对象数组列表中查找特定对象,java,Java,我目前正在尝试制作一个Sokoban游戏(玩家将板条箱推入钻石的游戏)。 我已经制定了在屏幕上显示精灵,可以移动玩家精灵,但可以让推动部分工作 这是我的移动方法: public void move(Direction d){ char objectType; Objects o; Point p = convertPhysicalToGrid(WKSprite.getLocation()); Point q = getLocation(p, d);

我目前正在尝试制作一个Sokoban游戏(玩家将板条箱推入钻石的游戏)。 我已经制定了在屏幕上显示精灵,可以移动玩家精灵,但可以让推动部分工作

这是我的移动方法:

public void move(Direction d){ 

    char objectType;
    Objects o;
    Point p = convertPhysicalToGrid(WKSprite.getLocation());
    Point q = getLocation(p, d);

    objectType = getObjectTypeAtPoint(q);
    o = getObjectAtPoint(q);

    Point n = getLocation(q, d);


    System.out.println(objectType);
    System.out.println(o);

    if (q != null) {
        if(objectType == 'C' ){     
            System.out.println("Crate hit");
            grid[q.y][q.x] = grid[n.y][n.x];
            grid[p.y][p.x] = grid[q.y][q.x];
            grid[p.y][p.x] = null;
            o.setLocation(convertGridToPhysical(n)); 
            WKSprite.setLocation(convertGridToPhysical(q));  

        }
        else if(grid[q.y][q.x] == null){
            grid[p.y][p.x] = grid[q.y][q.x];
            grid[p.y][p.x] = null;
            WKSprite.setLocation(convertGridToPhysical(q));  
        }
    }
}
移动工作正常,但在检查是否有板条箱无法工作时

我在移动前调用这两种方法,以便在玩家实际移动时检查碰撞

public char getObjectTypeAtPoint(Point p){

    int collision = 0;
    char objectType = 0;

    for (int i = 0; i < objectList.size(); i++) {
        if (objectList.get(i).getPosition() == p){
            collision = i;
            objectType = objectList.get(collision).getObjectType();

        }
    }
    return objectType;

}

public Objects getObjectAtPoint(Point p){

    int collision = 0;

    for (int i = 0; i < objectList.size(); i++) {
        if (objectList.get(i).getPosition() == p){
            collision = i;

        }
    }
    return objectList.get(collision);

}
public char getObjectTypeAtPoint(点p){
int冲突=0;
char objectType=0;
对于(int i=0;i
问题是在使用这两种方法中的任何一种进行if测试时。即使数组列表中对象的点与给定点匹配,if中的代码也不会发生。char方法只返回0,Objects方法总是返回一个点为0,0的对象

我还尝试了objectList.get(I).contains()而不是ojectList.get(I).getPosition(),但这也不起作用


有没有人能解释一下我哪里出了问题,或者我是否有其他方法可以做到这一点。

试着将你的对象列表转换为指向点。对象可以保存多种数据类型,因此如果希望它==另一种特定的数据类型,则需要指定:

if((点)objectList.get(i).getPosition()==p){………}


在这两个位置。

尝试将对象列表强制转换为指向。对象可以保存多种数据类型,因此如果希望它==另一种特定的数据类型,则需要指定:

if((点)objectList.get(i).getPosition()==p){………}


在两个位置。

在Java中
=
检查引用是否相等。你绝对确定你要检查的点是列表中
对象的同一个实例,而不仅仅是保持相同的坐标吗?当然。我已经修改了代码来比较两个点的坐标,而不仅仅是比较两个点。谢谢。在Java中,
==
检查引用是否相等。你绝对确定你要检查的点是列表中
对象的同一个实例,而不仅仅是保持相同的坐标吗?当然。我已经修改了代码来比较两个点的坐标,而不仅仅是比较两个点。谢谢