我不是一个伟大的程序员,所以我想知道是否有人可以帮助我。在我的战舰游戏中,我有由 Rect 类制成的船,但我需要检查它们是否重叠。这就是我到目前为止所拥有的。
编辑:到底出了什么问题:我有两艘大小为 2 和 5 的船。所以说船 1 有 (0,0)(0,1) 坐标,船 2 有 (0,1) 到 (5,1)。它非常适合在点(0,1)上检查一号船的坐标,但仅此而已。我希望这是有道理的。所以如果我在 (1,1) 上检查 (0,0) 和 (0,1) 它显示没有错误
public boolean contains(Ship ship) {
int currentX = ship.getX();
int currentY = ship.getY();
int testX = xCoord;
int testY = yCoord;
if (rotated) { //if ship is horizontal enter
for (int j = 0; j < sizeOfShip; j++) {
for (int k = 0; k < ship.getSize(); k++) {
if (testX == currentX && testY == currentY) {
return false;
}
testX++;
}
if (ship.rotated)
currentX++;
else {
currentY++;
}
}
}
//
if (!rotated) {
for (int j = 0; j < sizeOfShip; j++) {
for (int k = 0; k < ship.getSize(); k++) {
if (testX == currentX && testY == currentY) {
return false;
}
testY++;
}
if (ship.rotated)
currentX++;
else {
currentY++;
} }
}
return true;
}