diff --git a/app.js b/app.js
index 39373d0f4954d3b1f399e90b6722a16991452e2d..2da8d7d46e5f88b9108a3a20c15502e7504dfe95 100644
--- a/app.js
+++ b/app.js
@@ -5,7 +5,7 @@ const express = require('express');
 const app = express();
 const http = require('http').createServer(app);
 const path = require('path');
-const port = 8080;
+const port = 8060;
 
 const io = require('socket.io')(http);
 
@@ -67,7 +67,9 @@ io.on('connection', (socket) => {
         socket.broadcast.emit('play', data);  // On diffuse à tous les clients
     });
 
-
+    socket.on('echec', () => {
+        socket.broadcast.emit('echec');
+    });
     socket.on('play again', (roomId) => {
         const room = rooms.find(r => r.id === roomId);
 
diff --git a/htdocs/index.js b/htdocs/index.js
index aaf5759737911ca0e75ee3a682876a095d96456a..732b0a7904becb2ad98a5ccd9ad0b996b6b3d578 100644
--- a/htdocs/index.js
+++ b/htdocs/index.js
@@ -108,18 +108,20 @@ socket.on('join room', (roomId) => {
 });
 
 socket.on('start game', (players) => {
-    console.log(players, "Le jeu commence");
+    //console.log(players, "Le jeu commence");
     startGame(players);
-    console.log(player.isBlackPlayer)
+    //console.log(player.isBlackPlayer)
     if (player.isBlackPlayer) {
         document.getElementById('chessboard').classList.add('black-perspective');
-        console.log("échiquier inversé")
+        //console.log("échiquier inversé")
     }
 });
 
-
+socket.on('echec', () => {  // Fonction de callback correcte
+    document.getElementById("echec-message").classList.remove("d-none");
+});
 socket.on('play', (moveData) => {
-    console.log("[Client] Mouvement reçu : ", moveData.move.to.x, 'et', moveData.move.to.y,'et', tour, 'et', selectedPosition);
+    //console.log("[Client] Mouvement reçu : ", moveData.move.to.x, 'et', moveData.move.to.y,'et', tour, 'et', selectedPosition);
     selectedPiece = moveData.move.piece;
     row=moveData.move.from.x;
     col=moveData.move.from.y;
@@ -132,7 +134,7 @@ socket.on('play', (moveData) => {
 
     // Réinitialiser la pièce sélectionnée
 
-    selectedPiece =null;
+    selectedPiece = null;
     selectedPosition = null;
     draw()
     // Ne remplace PAS l'échiquier complet, mais applique le coup reçu
@@ -181,7 +183,7 @@ function startGame(players) {
     draw();
     ennemyUsername = ennemyPlayer.username;
     tour = {currentPlayer: player, ennemyPlayer: ennemyPlayer};
-    console.log(ennemyPlayer);
+    //console.log(ennemyPlayer);
     if (player.host && player.turn) {
         setTurnMessage('alert-info', 'alert-success', "C'est ton tour de jouer");
     } else {
@@ -332,7 +334,8 @@ function highlightMoves(tour,piece, row, col) {
         ennemyPieces = ["t", "c", "f", "q", "k", "p"];
     }
     let moves = [];
-    console.log(piece.toLowerCase() === "p");
+
+
     if (piece.toLowerCase() === "p") {
         if(row===6 && player.isBlackPlayer===false){
             if (board[row + 2*direction][col] === "") {
@@ -604,38 +607,38 @@ function find_pieces(piece,board){
     }
 }
 
-// function echec(tour, board) {
-//     // Trouve la position du roi ennemi
-//     let kingRow, kingCol;
-//     if (player.turn === true) {
-//         attackingPlayer = player;
-//         [kingRow, kingCol] = find_pieces('k', board); // Roi noir (adverse) si c'est au joueur blanc de jouer
-//     } else {
-//         attackingPlayer = ennemyPlayer;
-//         [kingRow, kingCol] = find_pieces('K', board); // Roi blanc (adverse) si c'est au joueur noir de jouer
-//     }
-
-//     let allPositions = [];
-
-//     for (let i = 0; i < board.length; i++) {
-//         for (let j = 0; j < board[i].length; j++) {
-//             const piece = board[i][j];
-//             if (piece) {
-//                 const moves = highlightMoves(piece, board, i, j);
-//                 allPositions.push({ piece, position: { i, j }, moves });
-
-//                 // 🔍 Vérifie si un des mouvements possibles atteint le roi
-//                 for (let move of moves) {
-//                     if (move.i === kingRow && move.j === kingCol) {
-//                         console.log(`Le roi est en échec par la pièce ${piece} en position (${i}, ${j})`);
-//                         return true; // Roi est en échec
-//                     }
-//                 }
-//             }
-//         }
-//     }
-// }
+function echec(board) {
+
+    // Trouve la position du roi ennemi
+    let piecesAttaquant = [];
+    let kingRow, kingCol;
+    let allPositions = [];
+
+    if (player.isBlackPlayer === false) {
+        [kingRow, kingCol] = find_pieces("K", board); // Roi noir (adverse) si c'est au joueur blanc de jouer
+        piecesAttaquant = ["t", "c", "f", "q", "k", "p"];
+    } else {
+        [kingRow, kingCol] = find_pieces("k", board); // Roi blanc (adverse) si c'est au joueur noir de jouer
+        piecesAttaquant = ["T", "C", "F", "Q", "K", "P"];
+    }
+
+    
+    for (let i = 0; i < board.length; i++) {
+        for (let j = 0; j < board[i].length; j++) {
+            const pieceAttack = board[i][j];
+
+            if (pieceAttack !== "" && piecesAttaquant.includes(pieceAttack)) {
+                moves=highlightMoves(board,pieceAttack , i, j)
+                for (k =0; k<moves.length;k++){
+                    if (moves[k].row === kingRow && moves[k].col === kingCol) return true;
+                }
+            }
+        }
+    }
+    return false;
+}
 function movePiece(piece, newRow, newCol) {
+    document.getElementById("echec-message").classList.add("d-none");
     if (!piece) return;
 
     // Vérifier si le mouvement est valide
@@ -648,10 +651,10 @@ function movePiece(piece, newRow, newCol) {
         // Déplacer la pièce
         board[newRow][newCol] = piece;
         board[selectedPosition.row][selectedPosition.col] = "";
+        console.log(echec(board));
+
+
 
-        // Réinitialiser la pièce sélectionnée
-        console.log(selectedPosition.row,selectedPosition.col)
-        
         //currentPlayer=(currentPlayer+1)%2;
         socket.emit('play', {
             move: {
@@ -661,15 +664,18 @@ function movePiece(piece, newRow, newCol) {
                 piece: selectedPiece            // Nom de la pièce (ex: "pion", "tour", etc.)
             }
         });
+
+        if (echec(board)){
+            socket.emit('echec');
+        }
+
         setTurnMessage('alert-success', 'alert-info', `C'est au tour de <b>${ennemyUsername}</b> de jouer`)
         player.turn = false;
 
         selectedPiece =null;
         selectedPosition = null;
         [tour.currentPlayer, tour.ennemyPlayer] = [tour.ennemyPlayer, tour.currentPlayer];
-        // if (echec(tour,board)===true){
-        //     console.log('echeeeeeeeeecs')
-        // }
+
         // Redessiner le plateau
         draw();
     } else {
diff --git a/htdocs/page_acceuil2.html b/htdocs/page_acceuil2.html
index fd5ecf11f327feda111ba511560b022331b9066f..670aae3ac8fd2150c8c3659032a4210774197cb2 100644
--- a/htdocs/page_acceuil2.html
+++ b/htdocs/page_acceuil2.html
@@ -88,6 +88,7 @@
             </div>
         </div>
     </div>
+    <div id="echec-message" class="d-none">Échec !</div>
     <canvas id="chessboard" class="board" width="480" height="480"></canvas>
     <script src="./jquery/jquery.min.js"></script>
     <script src="./bootstrap/js/bootstrap.min.js"></script>