58 lines
1.4 KiB
Java
58 lines
1.4 KiB
Java
package dev.kske.chess.board;
|
|
|
|
/**
|
|
* Project: <strong>Chess</strong><br>
|
|
* File: <strong>EnPassant.java</strong><br>
|
|
* Created: <strong>2 Nov 2019</strong><br>
|
|
*
|
|
* @since Chess v0.5-alpha
|
|
* @author Kai S. K. Engelbart
|
|
*/
|
|
public class EnPassant extends Move {
|
|
|
|
private final Position capturePos;
|
|
|
|
/**
|
|
* Initializes an en passant move.
|
|
*
|
|
* @param pos the position of this move
|
|
* @param dest the destination of this move
|
|
*/
|
|
public EnPassant(Position pos, Position dest) {
|
|
super(pos, dest);
|
|
capturePos = new Position(dest.x, dest.y - ySign);
|
|
}
|
|
|
|
/**
|
|
* Initializes an en passant move.
|
|
*
|
|
* @param xPos the horizontal position of this move
|
|
* @param yPos the vertical position of this move
|
|
* @param xDest the horizontal destination of this move
|
|
* @param yDest the vertical destination of this move
|
|
*/
|
|
public EnPassant(int xPos, int yPos, int xDest, int yDest) {
|
|
this(new Position(xPos, yPos), new Position(xDest, yDest));
|
|
}
|
|
|
|
@Override
|
|
public void execute(Board board) {
|
|
super.execute(board);
|
|
board.set(capturePos, null);
|
|
}
|
|
|
|
@Override
|
|
public void revert(Board board, Piece capturedPiece) {
|
|
super.revert(board, capturedPiece);
|
|
board.set(
|
|
capturePos,
|
|
new Pawn(board.get(pos).getColor().opposite(), board)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return the position of the piece captures by this move
|
|
*/
|
|
public Position getCapturePos() { return capturePos; }
|
|
}
|