no break
This commit is contained in:
parent
8d7a88552b
commit
da7f9739fc
Binary file not shown.
|
|
@ -133,23 +133,23 @@ public class Move {
|
||||||
switch (piece.getType()) {
|
switch (piece.getType()) {
|
||||||
case Pawn:
|
case Pawn:
|
||||||
addPawnMoves(moves, piece, board);
|
addPawnMoves(moves, piece, board);
|
||||||
break;
|
return moves;
|
||||||
case Rook:
|
case Rook:
|
||||||
addRookMoves(moves, piece, board);
|
addRookMoves(moves, piece, board);
|
||||||
break;
|
return moves;
|
||||||
case Knight:
|
case Knight:
|
||||||
addKnightMoves(moves, piece, board);
|
addKnightMoves(moves, piece, board);
|
||||||
break;
|
return moves;
|
||||||
case Bishop:
|
case Bishop:
|
||||||
addBishopMoves(moves, piece, board);
|
addBishopMoves(moves, piece, board);
|
||||||
break;
|
return moves;
|
||||||
case Queen:
|
case Queen:
|
||||||
addRookMoves(moves, piece, board);
|
addRookMoves(moves, piece, board);
|
||||||
addBishopMoves(moves, piece, board);
|
addBishopMoves(moves, piece, board);
|
||||||
break;
|
return moves;
|
||||||
case King:
|
case King:
|
||||||
addKingMoves(moves, piece, board);
|
addKingMoves(moves, piece, board);
|
||||||
break;
|
return moves;
|
||||||
}
|
}
|
||||||
|
|
||||||
return moves;
|
return moves;
|
||||||
|
|
@ -177,12 +177,14 @@ public class Move {
|
||||||
for (Piece p : board.getPieces()) {
|
for (Piece p : board.getPieces()) {
|
||||||
if (p.getType() == PieceType.King && p.isWhite() == isWhiteKing) {
|
if (p.getType() == PieceType.King && p.isWhite() == isWhiteKing) {
|
||||||
king = p;
|
king = p;
|
||||||
break;
|
return checkIfKingUnderAttack(board, isWhiteKing, king);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (king == null) return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkIfKingUnderAttack(Board board, boolean isWhiteKing, Piece king) {
|
||||||
// Check if any opponent piece can attack the king
|
// Check if any opponent piece can attack the king
|
||||||
for (Piece p : board.getPieces()) {
|
for (Piece p : board.getPieces()) {
|
||||||
if (p.isWhite() == isWhiteKing) continue; // Skip pieces of same color
|
if (p.isWhite() == isWhiteKing) continue; // Skip pieces of same color
|
||||||
|
|
@ -250,8 +252,9 @@ public class Move {
|
||||||
|
|
||||||
int newX = x + dx;
|
int newX = x + dx;
|
||||||
int newY = y + dy;
|
int newY = y + dy;
|
||||||
|
boolean continueInDirection = true;
|
||||||
|
|
||||||
while (newX >= 0 && newX < board.getWidth() && newY >= 0 && newY < board.getHeight()) {
|
while (newX >= 0 && newX < board.getWidth() && newY >= 0 && newY < board.getHeight() && continueInDirection) {
|
||||||
Piece targetPiece = board.getPieceAt(newX, newY);
|
Piece targetPiece = board.getPieceAt(newX, newY);
|
||||||
|
|
||||||
if (targetPiece == null) {
|
if (targetPiece == null) {
|
||||||
|
|
@ -263,14 +266,16 @@ public class Move {
|
||||||
// Capture opponent's piece
|
// Capture opponent's piece
|
||||||
validMoves.add(new Position(newX, newY));
|
validMoves.add(new Position(newX, newY));
|
||||||
}
|
}
|
||||||
break; // Cannot move beyond a piece
|
continueInDirection = false; // Cannot move beyond a piece
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (continueInDirection) {
|
||||||
newX += dx;
|
newX += dx;
|
||||||
newY += dy;
|
newY += dy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void addKnightMoves(List<Position> validMoves, Piece piece, Board board) {
|
private void addKnightMoves(List<Position> validMoves, Piece piece, Board board) {
|
||||||
int x = piece.getX();
|
int x = piece.getX();
|
||||||
|
|
@ -312,8 +317,9 @@ public class Move {
|
||||||
|
|
||||||
int newX = x + dx;
|
int newX = x + dx;
|
||||||
int newY = y + dy;
|
int newY = y + dy;
|
||||||
|
boolean continueInDirection = true;
|
||||||
|
|
||||||
while (newX >= 0 && newX < board.getWidth() && newY >= 0 && newY < board.getHeight()) {
|
while (newX >= 0 && newX < board.getWidth() && newY >= 0 && newY < board.getHeight() && continueInDirection) {
|
||||||
Piece targetPiece = board.getPieceAt(newX, newY);
|
Piece targetPiece = board.getPieceAt(newX, newY);
|
||||||
|
|
||||||
if (targetPiece == null) {
|
if (targetPiece == null) {
|
||||||
|
|
@ -325,14 +331,16 @@ public class Move {
|
||||||
// Capture opponent's piece
|
// Capture opponent's piece
|
||||||
validMoves.add(new Position(newX, newY));
|
validMoves.add(new Position(newX, newY));
|
||||||
}
|
}
|
||||||
break; // Cannot move beyond a piece
|
continueInDirection = false; // Cannot move beyond a piece
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (continueInDirection) {
|
||||||
newX += dx;
|
newX += dx;
|
||||||
newY += dy;
|
newY += dy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void addKingMoves(List<Position> validMoves, Piece piece, Board board) {
|
private void addKingMoves(List<Position> validMoves, Piece piece, Board board) {
|
||||||
int x = piece.getX();
|
int x = piece.getX();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue