en passant rule
This commit is contained in:
@@ -25,6 +25,7 @@ public class ChessBoard {
|
||||
}
|
||||
|
||||
private final Cell[][] cells;
|
||||
private Move lastVirtualMove;
|
||||
private Move lastMove;
|
||||
private Piece lastEjectedPiece;
|
||||
|
||||
@@ -35,35 +36,38 @@ public class ChessBoard {
|
||||
this.cells[i][j] = new Cell();
|
||||
}
|
||||
}
|
||||
this.lastVirtualMove = null;
|
||||
this.lastMove = null;
|
||||
this.lastEjectedPiece = null;
|
||||
}
|
||||
|
||||
public void applyMove(Move move) {
|
||||
assert move.isValid() : "Invalid move !";
|
||||
Piece deadPiece = pieceAt(move.getFinish());
|
||||
Piece deadPiece = pieceAt(move.getDeadPieceCoords());
|
||||
if (deadPiece != null) {
|
||||
this.lastEjectedPiece = deadPiece;
|
||||
} else {
|
||||
this.lastEjectedPiece = null;
|
||||
}
|
||||
Piece movingPiece = pieceAt(move.getStart());
|
||||
pieceComes(movingPiece, move.getFinish());
|
||||
pieceLeaves(move.getDeadPieceCoords());
|
||||
pieceLeaves(move.getStart());
|
||||
pieceComes(movingPiece, move.getFinish());
|
||||
movingPiece.move();
|
||||
this.lastMove = move;
|
||||
this.lastVirtualMove = move;
|
||||
}
|
||||
|
||||
public void undoLastMove() {
|
||||
assert this.lastMove != null: "Can't undo at the beginning!";
|
||||
assert this.lastVirtualMove != null: "Can't undo at the beginning!";
|
||||
|
||||
undoMove(this.lastMove, this.lastEjectedPiece);
|
||||
undoMove(this.lastVirtualMove, this.lastEjectedPiece);
|
||||
}
|
||||
|
||||
public void undoMove(Move move, Piece deadPiece) {
|
||||
Piece movingPiece = pieceAt(move.getFinish());
|
||||
pieceComes(movingPiece, move.getStart());
|
||||
pieceComes(deadPiece, move.getFinish());
|
||||
pieceLeaves(move.getFinish());
|
||||
pieceComes(deadPiece, move.getDeadPieceCoords());
|
||||
movingPiece.unMove();
|
||||
}
|
||||
|
||||
@@ -177,4 +181,12 @@ public class ChessBoard {
|
||||
return result;
|
||||
}
|
||||
|
||||
public Move getLastMove() {
|
||||
return this.lastMove;
|
||||
}
|
||||
|
||||
public void setLastMove(Move lastMove) {
|
||||
this.lastMove = lastMove;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user