при отладке весь код спокойно доходит до конца и выполняется, но при обычном запуске программы выдаёт почему то ошибки с чем это может быть связано? и какие советы вы могли бы дать
public int playTheGame() {
Chessboard chessboard = new Chessboard();
whiteTurn.setTurnColor("white");
blackTurn.setTurnColor("black");
while (mate == 0) {
getIndex getIndex = new chooseTheIndex();
Index before = new Index();
Index after = new Index();
if (lastTurn.isEmpty()) {
System.out.println("Первыми ходят белые!");
before = getIndex.scanIndex();
after = getIndex.scanIndex();
chessboard.getBoard().get(before.getIndex()).move(before, after);
chessboard.printTheBoard();
whiteTurn.setIndex(after);
lastTurn.add(whiteTurn);
return playTheGame();
}
if (lastTurn.get(lastTurn.size() - 1) == blackTurn) {
if(chessboard.getBoard().get(before.getIndex()) instanceof WhiteKing &&
chessboard.getBoard().get(after.getIndex()) instanceof WhiteCastle &&
whiteCastleAble.castleWithKing(before, after)){
((WhiteKing) chessboard.getBoard().get(before.getIndex())).castlingMove(before, after);
return playTheGame();
}
// ПРОВЕРКА НА ШАХ
for (int i = 0; i < chessboard.getBoard().size(); i++) {
if (chessboard.getBoard().get(i) instanceof WhiteKing) {
if (WhiteCheck.checkIsFound(chessboard.getBoard().get(i).getCoordinate())) {
if (!(mateForWhite.mateAble(chessboard.getBoard().get(i).getCoordinate()))) {
System.out.println("Шах ходить можно только королём");
before = chessboard.getBoard().get(i).getCoordinate();
System.out.println("ВЫбирайте координаты хода королём");
Index index = new Index();
while (after != index) {
for (Index tmp : whiteKingMoves.getKingMoves()) {
after = getIndex.scanIndex();
if (tmp.getIndex() == after.getIndex()) {
chessboard.getBoard().get(before.getIndex()).move(before, after);
index = tmp;
break;
}
return playTheGame();
}
}
} else {
System.out.println("Мат");
mate = 1;
return playTheGame();
}
}
}
}
before = getIndex.scanIndex();
after = getIndex.scanIndex();
chessboard.getBoard().get(before.getIndex()).move(before, after);
chessboard.printTheBoard();
whiteTurn.setIndex(after);
lastTurn.add(whiteTurn);
if (chessboard.getBoard().get(before.getIndex()) instanceof WhitePawn &&
chessboard.getBoard().get(after.getIndex()).getCoordinate().getCoordinateY() == 8) {
replaceIt.pawnReplacement(before, after);
return playTheGame();
} else if (chessboard.getBoard().get(before.getIndex()) instanceof BlackPawn &&
chessboard.getBoard().get(after.getIndex()).getCoordinate().getCoordinateY() == 0) {
replaceIt.pawnReplacement(before, after);
return playTheGame();
}
return playTheGame();
}
else if (lastTurn.get(lastTurn.size() - 1) == whiteTurn) {
if(chessboard.getBoard().get(before.getIndex()) instanceof BlackKing &&
chessboard.getBoard().get(after.getIndex()) instanceof BlackCastle &&
blackCastleAble.castleWithKing(before, after)){
((BlackKing) chessboard.getBoard().get(before.getIndex())).castlingMove(before, after);
return playTheGame();
}
// ПРОВЕРКА НА ШАХ
for (int i = 0; i < chessboard.getBoard().size(); i++) {
if (chessboard.getBoard().get(i) instanceof BlackKing) {
if (BlackCheck.checkIsFound(chessboard.getBoard().get(i).getCoordinate())) {
if (!(mateForBlack.mateAble(chessboard.getBoard().get(i).getCoordinate()))) {
System.out.println("Шах ходить можно только королём");
before = chessboard.getBoard().get(i).getCoordinate();
System.out.println("ВЫбирайте координаты хода королём");
Index index = new Index();
while (after != index) {
for (Index tmp : blackKingMoves.getKingMoves()) {
after = getIndex.scanIndex();
if (tmp.getIndex() == after.getIndex()) {
chessboard.getBoard().get(before.getIndex()).move(before, after);
index = tmp;
break;
}
return playTheGame();
}
}
} else {
System.out.println("Мат");
mate = 1;
return playTheGame();
}
}
}
}
before = getIndex.scanIndex();
after = getIndex.scanIndex();
chessboard.getBoard().get(before.getIndex()).move(before, after);
chessboard.printTheBoard();
blackTurn.setIndex(after);
lastTurn.add(blackTurn);
if (chessboard.getBoard().get(before.getIndex()) instanceof WhitePawn &&
chessboard.getBoard().get(after.getIndex()).getCoordinate().getCoordinateY() == 8) {
replaceIt.pawnReplacement(before, after);
return playTheGame();
} else if (chessboard.getBoard().get(before.getIndex()) instanceof BlackPawn &&
chessboard.getBoard().get(after.getIndex()).getCoordinate().getCoordinateY() == 0) {
replaceIt.pawnReplacement(before, after);
return playTheGame();
}
return playTheGame();
}
}
return playTheGame();
}
}