나는 자바에 체스를 쓰고 있는데, 날씨를 점검하기위한이 코드는 때때로 감독에게 장애물이 있으며 때로는 작동하지 않는 경우도있다. 내 실수를 설명해 주시겠습니까 감사합니다!비숍의 비어있는 대각선을 확인하는 방법은 무엇입니까?
public boolean checkifEmpty(int fromRow, int fromColumn, int toRow,
int toColumn, Figure[][] ChessBoard) {
int differenceInRows = Math.abs(fromRow - toRow);
if (differenceInRows == 1) {
return true;
}
for (int j = 1; j < differenceInRows; j++) {
if ((toRow < fromRow) && (toColumn > fromColumn)
&& ChessBoard[fromRow - j][fromColumn + j] == null) {
return true;
} else if ((toRow > fromRow) && (toColumn > fromColumn)
&& ChessBoard[fromRow + j][fromColumn + j] == null) {
return true;
} else if ((toRow > fromRow) && (toColumn < fromColumn)
&& ChessBoard[fromRow + j][fromColumn - j] == null) {
return true;
} else if ((toRow < fromRow) && (toColumn < fromColumn)
&& ChessBoard[fromRow - j][fromColumn - j] == null) {
return true;
}
}
return false;
}
ChessBoard [fromRow - j] [fromColumn + j]! = null을 사용하면 어떨까요? 빈 셀을 확인하는 대신 장애물이 될 때 즉시 true를 반환하고 장애물을 검색합니다 – user3505689
@ user3505689 : 단, 대신에'false'를 리턴하거나 메소드의 이름을'checkIfBlocked'로 변경해야합니다. –