From 07cf28a44f29f7278c3b321579b036cfcabe3caa Mon Sep 17 00:00:00 2001
From: Adam <adam.elarouti@etu.ec-lyon.fr>
Date: Wed, 26 Mar 2025 10:20:18 +0100
Subject: [PATCH] dame roi fou cavalier

---
 htdocs/chess.js | 133 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 133 insertions(+)

diff --git a/htdocs/chess.js b/htdocs/chess.js
index 1aa2da5..155ffc4 100644
--- a/htdocs/chess.js
+++ b/htdocs/chess.js
@@ -222,6 +222,139 @@ function highlightMoves(piece, row, col) {
             }
         }
     }
+    if (piece.toLowerCase() === "k") {
+        let directions = [
+            { dr: -1, dc: 0 },  // Haut
+            { dr: 1, dc: 0 },   // Bas
+            { dr: 0, dc: -1 },  // Gauche
+            { dr: 0, dc: 1 },   // Droite
+            { dr: -1, dc: -1 }, // Diagonale haut-gauche
+            { dr: -1, dc: 1 },  // Diagonale haut-droite
+            { dr: 1, dc: -1 },  // Diagonale bas-gauche
+            { dr: 1, dc: 1 }    // Diagonale bas-droite
+        ];
+    
+        for (let { dr, dc } of directions) {
+            let newRow = row + dr;
+            let newCol = col + dc;
+    
+            // Vérifie que la nouvelle position est sur l'échiquier
+            if (newRow >= 0 && newRow < 8 && newCol >= 0 && newCol < 8) {
+                if (board[newRow][newCol] === "" || noirs.includes(board[newRow][newCol])) {
+                    moves.push({ row: newRow, col: newCol });
+                }
+            }
+        }
+    }
+    if (piece.toLowerCase() === "c") {
+        let movesL = [
+            { dr: -2, dc: -1 }, { dr: -2, dc: 1 }, // Haut gauche, Haut droite
+            { dr: 2, dc: -1 }, { dr: 2, dc: 1 },   // Bas gauche, Bas droite
+            { dr: -1, dc: -2 }, { dr: -1, dc: 2 }, // Gauche haut, Droite haut
+            { dr: 1, dc: -2 }, { dr: 1, dc: 2 }    // Gauche bas, Droite bas
+        ];
+    
+        for (let { dr, dc } of movesL) {
+            let newRow = row + dr;
+            let newCol = col + dc;
+    
+            // Vérifie que la nouvelle position est sur l'échiquier
+            if (newRow >= 0 && newRow < 8 && newCol >= 0 && newCol < 8) {
+                if (board[newRow][newCol] === "" || noirs.includes(board[newRow][newCol])) {
+                    moves.push({ row: newRow, col: newCol });
+                }
+            }
+        }
+    }
+
+    if (piece.toLowerCase() === "q") {
+        // Déplacements verticaux (haut et bas)
+        for (let r = row - 1; r >= 0; r--) { // Haut
+            if (board[r][col] === "") {
+                moves.push({ row: r, col });
+            } else {
+                if (noirs.includes(board[r][col])) {
+                    moves.push({ row: r, col }); // Capture possible
+                }
+                break; // Bloqué par une pièce
+            }
+        }
+        for (let r = row + 1; r < 8; r++) { // Bas
+            if (board[r][col] === "") {
+                moves.push({ row: r, col });
+            } else {
+                if (noirs.includes(board[r][col])) {
+                    moves.push({ row: r, col });
+                }
+                break;
+            }
+        }
+    
+        // Déplacements horizontaux (gauche et droite)
+        for (let c = col - 1; c >= 0; c--) { // Gauche
+            if (board[row][c] === "") {
+                moves.push({ row, col: c });
+            } else {
+                if (noirs.includes(board[row][c])) {
+                    moves.push({ row, col: c });
+                }
+                break;
+            }
+        }
+        for (let c = col + 1; c < 8; c++) { // Droite
+            if (board[row][c] === "") {
+                moves.push({ row, col: c });
+            } else {
+                if (noirs.includes(board[row][c])) {
+                    moves.push({ row, col: c });
+                }
+                break;
+            }
+        }
+    
+        // Déplacements diagonaux (haut-gauche, haut-droite, bas-gauche, bas-droite)
+        for (let r = row - 1, c = col - 1; r >= 0 && c >= 0; r--, c--) { // Haut-Gauche
+            if (board[r][c] === "") {
+                moves.push({ row: r, col: c });
+            } else {
+                if (noirs.includes(board[r][c])) {
+                    moves.push({ row: r, col: c });
+                }
+                break;
+            }
+        }
+        for (let r = row - 1, c = col + 1; r >= 0 && c < 8; r--, c++) { // Haut-Droite
+            if (board[r][c] === "") {
+                moves.push({ row: r, col: c });
+            } else {
+                if (noirs.includes(board[r][c])) {
+                    moves.push({ row: r, col: c });
+                }
+                break;
+            }
+        }
+        for (let r = row + 1, c = col - 1; r < 8 && c >= 0; r++, c--) { // Bas-Gauche
+            if (board[r][c] === "") {
+                moves.push({ row: r, col: c });
+            } else {
+                if (noirs.includes(board[r][c])) {
+                    moves.push({ row: r, col: c });
+                }
+                break;
+            }
+        }
+        for (let r = row + 1, c = col + 1; r < 8 && c < 8; r++, c++) { // Bas-Droite
+            if (board[r][c] === "") {
+                moves.push({ row: r, col: c });
+            } else {
+                if (noirs.includes(board[r][c])) {
+                    moves.push({ row: r, col: c });
+                }
+                break;
+            }
+        }
+    }
+
     return moves;
 
     }
-- 
GitLab