tiens
This commit is contained in:
parent
a16bcbf7fd
commit
5342412216
|
|
@ -300,32 +300,6 @@ public class Board {
|
|||
selectedY = -1;
|
||||
highlightedSquares.clear();
|
||||
}
|
||||
public boolean isKingInCheck(boolean isWhite) {
|
||||
Piece king = null;
|
||||
for (Piece p : pieces) {
|
||||
if (p.getType() == PieceType.King && p.isWhite() == isWhite) {
|
||||
king = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (king == null) return true;
|
||||
|
||||
int kingX = king.getX();
|
||||
int kingY = king.getY();
|
||||
|
||||
for (Piece p : pieces) {
|
||||
if (p.isWhite() != isWhite) {
|
||||
ArrayList<int[]> moves = Move.getLegalMoves(this, p);
|
||||
for (int[] move : moves) {
|
||||
if (move[0] == kingX && move[1] == kingY) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public Piece getPieceAt(int x, int y) {
|
||||
for (Piece p : pieces) {
|
||||
|
|
|
|||
|
|
@ -106,26 +106,6 @@ public class Move {
|
|||
|
||||
return moves;
|
||||
}
|
||||
|
||||
public static ArrayList<int[]> getLegalMoves(Board board, Piece piece) {
|
||||
ArrayList<int[]> legalMoves = new ArrayList<>();
|
||||
ArrayList<int[]> candidateMoves = getPossibleMoves(board, piece);
|
||||
|
||||
for (int[] move : candidateMoves) {
|
||||
Board clone = new Board(board); // Deep copy constructor
|
||||
Piece moved = clone.getPieceAt(piece.getX(), piece.getY());
|
||||
|
||||
// Play the simulated move
|
||||
Piece captured = clone.getPieceAt(move[0], move[1]);
|
||||
Move simulated = new Move(moved, piece.getX(), piece.getY(), move[0], move[1], captured);
|
||||
clone.playMove(simulated);
|
||||
|
||||
if (!clone.isKingInCheck(piece.isWhite())) {
|
||||
legalMoves.add(move);
|
||||
}
|
||||
}
|
||||
return legalMoves;
|
||||
}
|
||||
|
||||
private static boolean isInsideBoard(Board board, int x, int y) {
|
||||
return x >= 0 && x < board.getWidth() && y >= 0 && y < board.getHeight();
|
||||
|
|
|
|||
Loading…
Reference in New Issue