Fix king control zone, disable checks preventing castling

main
Elnu 2 years ago
parent 2c5d9079cd
commit acb9e05e07

@ -28,8 +28,8 @@ public class King extends Piece {
rightRook instanceof Rook && rightRook instanceof Rook &&
!rightRook.moved && !rightRook.moved &&
board.get(position.x + 1, position.y) == null && board.get(position.x + 1, position.y) == null &&
board.get(position.x + 2, position.y) == null && board.get(position.x + 2, position.y) == null // &&
!isInCheck(board) // !isInCheck(board)
) { ) {
// TODO: Does not take into account squares in castling path being threatened // TODO: Does not take into account squares in castling path being threatened
Move rightCastle = new Move(position, new BoardCoordinate(position.x + 2, position.y)); Move rightCastle = new Move(position, new BoardCoordinate(position.x + 2, position.y));
@ -46,8 +46,8 @@ public class King extends Piece {
!leftRook.moved && !leftRook.moved &&
board.get(position.x - 1, position.y) == null && board.get(position.x - 1, position.y) == null &&
board.get(position.x - 2, position.y) == null && board.get(position.x - 2, position.y) == null &&
board.get(position.x - 3, position.y) == null && board.get(position.x - 3, position.y) == null // &&
!isInCheck(board) // !isInCheck(board)
) { ) {
// TODO: Does not take into account squares in castling path being threatened // TODO: Does not take into account squares in castling path being threatened
Move leftCastle = new Move(position, new BoardCoordinate(position.x - 2, position.y)); Move leftCastle = new Move(position, new BoardCoordinate(position.x - 2, position.y));

@ -61,7 +61,7 @@ public abstract class Piece {
outer: for (int y = 0; y < Board.BOARD_SIZE; y++) { outer: for (int y = 0; y < Board.BOARD_SIZE; y++) {
for (int x = 0; x < Board.BOARD_SIZE; x++) { for (int x = 0; x < Board.BOARD_SIZE; x++) {
Piece piece = board.get(x, y); Piece piece = board.get(x, y);
if (piece == null || piece.black == black || piece instanceof King) continue; if (piece == null || piece.black == black) continue;
ArrayList<Move> legalMoves = piece.getLegalMoves(new BoardCoordinate(x, y), board, false); ArrayList<Move> legalMoves = piece.getLegalMoves(new BoardCoordinate(x, y), board, false);
for (Move legalMove : legalMoves) { for (Move legalMove : legalMoves) {
Piece pieceAtMove = board.get(legalMove.to); Piece pieceAtMove = board.get(legalMove.to);