check-checkmates marius
This commit is contained in:
commit
520e61ce8f
|
|
@ -21,9 +21,11 @@ public class Board {
|
|||
private boolean whiteRookQueensideMoved = false;
|
||||
private boolean blackRookKingsideMoved = false;
|
||||
private boolean blackRookQueensideMoved = false;
|
||||
private boolean isInCheckState = false;
|
||||
private boolean isCheckmateState = false;
|
||||
private ArrayList<Move> moveHistory = new ArrayList<>();
|
||||
|
||||
private Piece getPieceAt(int x, int y) {
|
||||
public Piece getPieceAt(int x, int y) {
|
||||
for (Piece piece : pieces) {
|
||||
if (piece.getX() == x && piece.getY() == y) {
|
||||
return piece;
|
||||
|
|
@ -291,6 +293,14 @@ public class Board {
|
|||
public boolean isTurnWhite() {
|
||||
return isTurnWhite;
|
||||
}
|
||||
|
||||
public boolean isInCheckState() {
|
||||
return isInCheckState;
|
||||
}
|
||||
|
||||
public boolean isCheckmateState() {
|
||||
return isCheckmateState;
|
||||
}
|
||||
|
||||
public void setPiece(boolean isWhite, PieceType type, int x, int y) {
|
||||
if (x < 0 || x >= width || y < 0 || y >= height) {
|
||||
|
|
@ -577,16 +587,22 @@ public class Board {
|
|||
turnNumber++;
|
||||
isTurnWhite = !isTurnWhite;
|
||||
|
||||
// Check for checkmate or stalemate after the move
|
||||
if (isCheckmate()) {
|
||||
// Game over - checkmate
|
||||
// You could set a game state flag here or trigger a UI event
|
||||
System.out.println("Checkmate! " + (isTurnWhite ? "Black" : "White") + " wins!");
|
||||
// Vérifier si le roi est en échec
|
||||
isInCheckState = isInCheck(isTurnWhite);
|
||||
|
||||
// Vérifier si c'est un échec et mat ou un pat
|
||||
if (isInCheckState) {
|
||||
isCheckmateState = isCheckmate();
|
||||
if (isCheckmateState) {
|
||||
System.out.println("Checkmate! " + (!isTurnWhite ? "White" : "Black") + " wins!");
|
||||
} else {
|
||||
System.out.println("Check8 " + (isTurnWhite ? "white" : "Black") + "!");
|
||||
}
|
||||
} else if (isStalemate()) {
|
||||
// Game over - stalemate
|
||||
// You could set a game state flag here or trigger a UI event
|
||||
System.out.println("Stalemate! Game is a draw.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Reset selection regardless of whether move was valid
|
||||
|
|
@ -620,7 +636,10 @@ public class Board {
|
|||
}
|
||||
|
||||
private boolean hasLegalMoves(boolean isWhite) {
|
||||
for (Piece piece : pieces) {
|
||||
// Créer une copie de la liste pour éviter les modifications concurrentes
|
||||
ArrayList<Piece> piecesToCheck = new ArrayList<>(pieces);
|
||||
|
||||
for (Piece piece : piecesToCheck) {
|
||||
if (piece.isWhite() == isWhite && !getValidMoves(piece).isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue