Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private boolean validateLastMoveForEnPassant(Board board, Coordinate from, Coordinate to) {
- Move lastMove = board.getMoveHistory().get(board.getMoveHistory().size() - 1);
- int lastMoveToX = lastMove.getTo().getX();
- int lastMoveToY = lastMove.getTo().getY();
- Piece lastMovedPiece = lastMove.getMovedPiece();
- Color lastMovedColor = lastMovedPiece.getColor();
- Color attackingPawnColor = board.getPieceAt(from).getColor();
- MoveVector normVec = lastMovedColor == Color.WHITE ? Vectors.WHITE_PAWN_DOUBLE : Vectors.BLACK_PAWN_DOUBLE;
- MoveVector lastMovedVector = new MoveVector(lastMove.getFrom(), lastMove.getTo());
- boolean isPawn = (lastMovedPiece.getType() == PieceType.PAWN);
- boolean isEnemy = (attackingPawnColor != lastMovedColor);
- boolean isYEqual = (lastMoveToY == from.getY());
- boolean isNextTo = (isYEqual && (lastMoveToX == from.getX() + 1 || lastMoveToX == from.getX() - 1));
- boolean isDoubleMove = lastMovedVector.equals(normVec);
- if (isPawn && isEnemy && isNextTo && isDoubleMove) {
- return true;
- } else {
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement