diff --git a/src/backend/Board.java b/src/backend/Board.java index 782f094..b6b4d58 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -168,18 +168,18 @@ public class Board { } } - if (valid) { - Piece pieceToMove = board[selectedX][selectedY]; + if (valid) { //if the tile we have selected is a highlighted position proceed with move through the following : + Piece pieceToMove = board[selectedX][selectedY]; // The previously selected X and Y coordinates contain a piece which is now the piece we want to move - if (pieceToMove.getType() == PieceType.King && Math.abs(x - selectedX) == 2) { + if (pieceToMove.getType() == PieceType.King && Math.abs(x - selectedX) == 2) { // only case where king can move 2 tiles away is through castling so checks if it is the case. y = selectedY; - if (x == 6) { - board[5][y] = board[7][y]; - board[7][y] = null; - board[5][y].setMoved(true); - board[5][y].setX(5); + if (x == 6) { //King side castling + board[5][y] = board[7][y]; //Final position of rook becomes a rook tile + board[7][y] = null; // Initial position becomes empty + board[5][y].setMoved(true); //Manually change the moved status as the rook is not subject to it since it's technically not the piece to be moved + board[5][y].setX(5); // For same reason, in order to display correctly on the interface board[5][y].setY(y); - } else if (x == 2) { + } else if (x == 2) { // Queen side castling board[3][y] = board[0][y]; board[0][y] = null; board[3][y].setMoved(true); @@ -187,9 +187,9 @@ public class Board { board[3][y].setY(y); } } - if (pieceToMove.getType() == PieceType.Pawn && (y == 0 || y == 7)) { - PieceType promotionType = askPromotionChoice(pieceToMove.isWhite()); - board[x][y] = new Piece(x, y, promotionType, pieceToMove.isWhite()); + if (pieceToMove.getType() == PieceType.Pawn && (y == 0 || y == 7)) { // When a pawn reaches an end line (no need to check color as they can only move forward so a pawn reaching 0 or 7 necessarly needs promotion) + PieceType promotionType = askPromotionChoice(pieceToMove.isWhite()); // color as input to be able to replace with piece of accurate color. + board[x][y] = new Piece(x, y, promotionType, pieceToMove.isWhite()); // The position of the previous pawn is replaced by the pawn defined in askPromotionChoice } // Handle en passant capture