canMove
aunknown
abap
3 years ago
3.0 kB
5
Indexable
@Override
public boolean canMove(Board board, int x, int y) {
boolean flag = false;
if (board.validate(x, y)) {
if (this.getCoordinatesX() != x && this.getCoordinatesY() != y) {
return false;
}
//Search on road to pos
if (this.getCoordinatesX() != x) {
int currentPosX = this.getCoordinatesX();
if (currentPosX > x) {
for (int i = currentPosX - 1; i >= x; i--) {
Piece piece = board.getAt(i, y);
if (piece == null) {
flag = true;
} else if (!this.getColor().equals(piece.getColor())) {
flag = true;
} else if (this.getColor().equals(piece.getColor())) {
flag = false;
break;
}
}
} else if (currentPosX < x) {
for (int i = currentPosX + 1; i <= x; i++) {
Piece piece = board.getAt(i, y);
if (piece == null) {
flag = true;
} else if (!this.getColor().equals(piece.getColor())) {
flag = true;
} else if (this.getColor().equals(piece.getColor())) {
flag = false;
break;
}
}
}
} else if (this.getCoordinatesY() != y) {
int currentPosY = this.getCoordinatesY();
if (currentPosY > y) {
for (int i = currentPosY - 1; i >= y; i--) {
Piece piece = board.getAt(x, i);
if (piece == null) {
flag = true;
} else if (!this.getColor().equals(piece.getColor())) {
flag = true;
} else if (this.getColor().equals(piece.getColor())) {
flag = false;
break;
}
}
} else if (currentPosY < y) {
for (int i = currentPosY + 1; i <= y; i++) {
Piece piece = board.getAt(x, i);
if (piece == null) {
flag = true;
} else if (!this.getColor().equals(piece.getColor())) {
flag = true;
} else if (this.getColor().equals(piece.getColor())) {
flag = false;
break;
}
}
}
}
return flag;
}
return false;
}Editor is loading...