Java 尝试从对象数组列表中查找特定对象
我目前正在尝试制作一个Sokoban游戏(玩家将板条箱推入钻石的游戏)。 我已经制定了在屏幕上显示精灵,可以移动玩家精灵,但可以让推动部分工作 这是我的移动方法:Java 尝试从对象数组列表中查找特定对象,java,Java,我目前正在尝试制作一个Sokoban游戏(玩家将板条箱推入钻石的游戏)。 我已经制定了在屏幕上显示精灵,可以移动玩家精灵,但可以让推动部分工作 这是我的移动方法: public void move(Direction d){ char objectType; Objects o; Point p = convertPhysicalToGrid(WKSprite.getLocation()); Point q = getLocation(p, d);
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中,==
检查引用是否相等。你绝对确定你要检查的点是列表中点
对象的同一个实例,而不仅仅是保持相同的坐标吗?当然。我已经修改了代码来比较两个点的坐标,而不仅仅是比较两个点。谢谢