用vector装载大小一致的图片 40*40的像素 
随便写一个图片移动的方法 
如何去做所有图片之间的碰撞检测 就是让图片在移动的途中不会相互重叠//et 是当前类的引用
public Rectangle getRect(){
return new Rectangle(x,y,40,40);
}
public boolean ete(ETanke et){
if(this.getRect().intersects(et.getRect())){
return true; }
//线程里调用这个方法
for(int i= 0 ; i <etankes.size()-1; i ++){
if(etankes.elementAt(i).ete(etankes.elementAt(i+1))){
System.out.println("YES");
}
for(int j = 0; j<etankes.size(); j ++){
}
}
代码出现的问题  -1是随便添加的  因为不加的话一个是出现自己与自己相撞
添加-1之后 new出10个图片之后  会出现碰撞 但是不是与它之外所有的 好像是有对应的才行
具体什么问题就不清楚了  想请教一下大家  完善这段代码

解决方案 »

  1.   

    这么判断就行了
    for(int i= 0 ; i <etankes.size(); i ++){
      for(int j=i+1;j<etankes.size();j++){
        if(etankes.elementAt(i).ete(etankes.elementAt(j))){
          System.out.println("YES");
        }
      }
    }
      

  2.   

    非常感谢  我写成j<i 好像也解决了这个问题 然后我在下面写了移除碰撞的图片来做测试
    etankes.remove(i);
    etankes.remove(j);跑一伙就出现一个是溢出的报错  
    用j=i+1也是一样
    Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3
      

  3.   

    在for循环的时候,不能用remove....
    remove会改变集合的下标,造成rrayIndexOutOfBoundsException异常
    要remove必须使用iterator方式遍历集合