我有一个包含5个条目的Java HashMap
。映射到每个条目的对象包含:
想想用10 x 10板的战舰战舰。每个条目中的x / y坐标对应于板上船舶的左上角,并且长度和方向对应于船舶长度和从该点的方向。
我正试图想办法撕掉5艘船并检查板上是否有任何“重叠的船只”,称为冲突。我无法弄清楚如何做到这一点。任何帮助将不胜感激。
答案 0 :(得分:1)
一种方法是:
1)为您的电路板中的每个电池分配一个数字,1-100(或0-99)。
2)向hashmap中的内容添加一个方法,该方法返回所覆盖的唯一单元ID的List。因此,如果x == 1,y == 1,length == 3,orientation == horizontal,您将返回表示潜艇所在单元格的三个1-100值。
您可以通过类似 rowNumber*10 + columnNumber
来计算第一个唯一ID。您可能需要调整它,具体取决于您是基于0还是1,或者如果您的范围同样基于0或1 ..从那里,如果水平,您只需为每个长度单位添加1。或者,如果您的作品是垂直的,则为每个唯一ID添加10。
3)现在你可以使用一个带有静态方法的碰撞检测器类,它需要两个部分。它可以调用您在步骤2中创建的方法,获取两个列表,如果有任何重叠,您将在两个列表中找到相同的数字。
我不知道这是否是最佳方式,但这是一种方式。