2015-03-02 60 views
0

所以我们要做的是让用户绘制矩形并检测矩形之间的冲突。java如何检测存储在数组中的形状的冲突Java

的矩形添加到Array_List形状:

ArrayList<Shape> shapes = new ArrayList<Shape>(); 

和碰撞的Java必须经过ArrayList的检测形状的碰撞。 (任何其他方式来检测碰撞是好的)。 我知道java有一个“.intersects()”形状的方法,但在这里更多的是关于很多形状,我不知道如何在这里使用它。

这是我迄今为止碰撞所做的一个小小的开始,我准备好了。请帮忙吗?

if (currentAction == 4) { 

// Create a new rectangle using x & y coordinates 

aShape = drawRectangle(drawStart.x, drawStart.y, 
e.getX(), e.getY()); 

//aShape added to the arraylist shapes 
shapes.add(aShape);                

for(int i=0;i<shapes.size();i++){        
Shape s = shapes.get(i); 

    //collision detection         

} 
    }         
+0

有多种方式可以确定两个形状是否相互碰撞,具体取决于您的需要。看看[这个例子](http://stackoverflow.com/questions/20927189/detecting-collision-of-two-sprites-that-c​​an-rotate/20928531#20928531)。 – MadProgrammer 2015-03-02 08:42:03

+0

@MadProgrammer在你的例子中,已经定义了两个矩形。需要的是检测我将绘制的矩形之间的碰撞。 – Lana 2015-03-02 09:21:43

+0

@MadProgrammer我只想让程序通过数组,读取形状的坐标,比较它们并找出形状碰撞的方式。你能帮忙吗? – Lana 2015-03-02 09:28:00

回答

0

我会告诉你 - 尝试阅读动态程序设计,并尝试打破水平碰撞和垂直碰撞的碰撞。

我希望它可以帮助...

+0

我不能真正明白你的意思是通过打破碰撞。试图做的是找到存储在数组列表中的形状之间的任何碰撞。 – Lana 2015-03-02 09:25:35

+0

我的意思是,你首先需要排序,然后遍历ArrayList,并在X轴上寻找碰撞,如果你没有发现这样的碰撞,你可以再次迭代并检查Y轴碰撞。另一种解决方案是使用与O(n^2)复杂度中的每个形状相交的方法。 – 2015-03-02 09:31:19

+0

我想过intersect()方法,但如何比较形状是否在数组列表中? – Lana 2015-03-02 09:38:11