Compare commits

..

2 Commits

Author SHA1 Message Date
LENG Sidenn bc16333d88 Merge branch 'master' of https://gitarero.ecam.fr/jerome.bedier/OOP_1A6_Project.git 2025-05-22 19:23:18 +02:00
flori debffdd8b5 checkmate situation 2025-05-16 11:22:40 +02:00
3 changed files with 27 additions and 22 deletions

Binary file not shown.

View File

@ -570,7 +570,6 @@ public class Board {
public boolean isKingInCheck(boolean isWhite) {
// First, find the king's position
Piece king = findKing(isWhite);
soudEffect soundPlayer = new soudEffect();
if (king == null) {
// If king not found (shouldn't happen in a valid chess game)
@ -596,7 +595,6 @@ public class Board {
// Check if any move can capture the king
for (Move move : moves) {
if (move.getToX() == kingX && move.getToY() == kingY) {
soundPlayer.playCheckSound();
return true; // King is in check
}
}
@ -718,5 +716,32 @@ public class Board {
// Replace highlights with filtered version
highlightedSquares = newHighlights;
}
public boolean isCheckmate(boolean isWhite) {
if (!isKingInCheck(isWhite)) {
return false; // Not in check, so not checkmate
}
// Check if ANY legal move can get the king out of check
for (Piece piece : getPieces()) {
if (piece.isWhite() == isWhite) {
ArrayList<Move> legalMoves = getLegalMoves(piece);
for (Move move : legalMoves) {
// Simulate move
Board simulatedBoard = new Board(this.toFileRep());
simulatedBoard.playMove(move);
// If king is not in check after this move, it's not checkmate
if (!simulatedBoard.isKingInCheck(isWhite)) {
return false;
}
}
}
}
return true; // No legal move prevents check => checkmate
}
}

View File

@ -1,20 +0,0 @@
package backend;
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
public class soudEffect {
public void playCheckSound() {
try {
// Replace "check.wav" with the path to your check sound file
File soundFile = new File("exterminate.wav");
AudioInputStream audioStream = AudioSystem.getAudioInputStream(soundFile);
Clip clip = AudioSystem.getClip();
clip.open(audioStream);
clip.start();
} catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
e.printStackTrace();
}
}
}