diff --git a/htdocs/chess.js b/htdocs/chess.js index 155ffc4a57cc1a3f5e859213af0a0bd780cefc39..b648491a8040b4f15c32f664e440b377ec2c142e 100644 --- a/htdocs/chess.js +++ b/htdocs/chess.js @@ -1,7 +1,7 @@ const canvas = document.getElementById("chessboard"); const ctx = canvas.getContext("2d"); const size = 60; // Taille des cases - +currentPlayer = 0; // Disposition initiale de l'échiquier const board = [ ["T", "C", "F", "Q", "K", "F", "C", "T"], @@ -16,8 +16,6 @@ const board = [ // Charger les images des pièces - - const pieceImages = { "p": "pion_blanc.png", "P": "pion_noir.png", @@ -33,8 +31,8 @@ const pieceImages = { "K": "roi_noir.png" }; -const noirs = ["P","T","C","F","Q","K"]; -const blancs = ["p","t","c","f","q","k"]; +const pieces_joueurs = {0: ["p","t","c","f","q","k"],1:["P","T","C","F","Q","K"]}; + @@ -97,29 +95,40 @@ canvas.addEventListener("click", function(event) { function selectPiece(row, col) { const piece = board[row][col]; - if (piece !== "") { // Vérifier que ce n'est pas une case vide + if (piece !== "" && pieces_joueurs[currentPlayer].includes(piece)) { // Vérifier que ce n'est pas une case vide selectedPiece = piece; selectedPosition = { row, col }; - highlightMoves(piece, row, col); + highlightMoves(currentPlayer,piece, row, col); } } -function highlightMoves(piece, row, col) { +function highlightMoves(player,piece, row, col) { + if (player===0){ + direction=-1; + opponent=1; + } + else{direction=1; + opponent=0; + } let moves = []; if (piece.toLowerCase() === "p") { - if(row===6){ - if (board[row - 2][col] === "") { - moves.push({row: row - 2,col}); + if(row===6 && player===0){ + if (board[row + 2*direction][col] === "") { + moves.push({row: row + 2*direction,col}); + } + } + if(row===1 && player===1){ + if (board[row +2*direction][col] === "") { + moves.push({row: row + 2*direction,col}); } } - let direction = -1; // Pion blanc monte if (board[row + direction] && board[row + direction][col] === "") { moves.push({ row: row + direction, col }); } - if (noirs.includes(board[row + direction][col + direction])){ + if (pieces_joueurs[opponent].includes(board[row + direction][col + direction])){ moves.push({row: row +direction, col: col + direction }) } - if (noirs.includes(board[row + direction][col - direction])){ + if (pieces_joueurs[opponent].includes(board[row + direction][col - direction])){ moves.push({row: row +direction, col: col - direction }) } } @@ -130,7 +139,7 @@ function highlightMoves(piece, row, col) { moves.push({ row: r, col }); } else { - if (noirs.includes(board[r][col])) { + if (pieces_joueurs[opponent].includes(board[r][col])) { moves.push({ row: r, col }); // Capture possible } break // Bloqué par une pièce @@ -142,7 +151,7 @@ function highlightMoves(piece, row, col) { if (board[r][col] === "") { moves.push({ row: r, col }); } else { - if (noirs.includes(board[r][col])) { + if (pieces_joueurs[opponent].includes(board[r][col])) { moves.push({ row: r, col }); } break; @@ -154,7 +163,7 @@ function highlightMoves(piece, row, col) { if (board[row][c] === "") { moves.push({ row, col: c }); } else { - if (noirs.includes(board[row][c])) { + if (pieces_joueurs[opponent].includes(board[row][c])) { moves.push({ row, col: c }); } break; @@ -166,7 +175,7 @@ function highlightMoves(piece, row, col) { if (board[row][c] === "") { moves.push({ row, col: c }); } else { - if (noirs.includes(board[row][c])) { + if (pieces_joueurs[opponent].includes(board[row][c])) { moves.push({ row, col: c }); } break; @@ -179,7 +188,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; // Bloqué par une pièce @@ -191,7 +200,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; @@ -203,7 +212,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; @@ -215,7 +224,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; @@ -240,7 +249,7 @@ function highlightMoves(piece, row, col) { // 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])) { + if (board[newRow][newCol] === "" || pieces_joueurs[opponent].includes(board[newRow][newCol])) { moves.push({ row: newRow, col: newCol }); } } @@ -260,7 +269,7 @@ function highlightMoves(piece, row, col) { // 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])) { + if (board[newRow][newCol] === "" || pieces_joueurs[opponent].includes(board[newRow][newCol])) { moves.push({ row: newRow, col: newCol }); } } @@ -273,7 +282,7 @@ function highlightMoves(piece, row, col) { if (board[r][col] === "") { moves.push({ row: r, col }); } else { - if (noirs.includes(board[r][col])) { + if (pieces_joueurs[opponent].includes(board[r][col])) { moves.push({ row: r, col }); // Capture possible } break; // Bloqué par une pièce @@ -283,7 +292,7 @@ function highlightMoves(piece, row, col) { if (board[r][col] === "") { moves.push({ row: r, col }); } else { - if (noirs.includes(board[r][col])) { + if (pieces_joueurs[opponent].includes(board[r][col])) { moves.push({ row: r, col }); } break; @@ -295,7 +304,7 @@ function highlightMoves(piece, row, col) { if (board[row][c] === "") { moves.push({ row, col: c }); } else { - if (noirs.includes(board[row][c])) { + if (pieces_joueurs[opponent].includes(board[row][c])) { moves.push({ row, col: c }); } break; @@ -305,7 +314,7 @@ function highlightMoves(piece, row, col) { if (board[row][c] === "") { moves.push({ row, col: c }); } else { - if (noirs.includes(board[row][c])) { + if (pieces_joueurs[opponent].includes(board[row][c])) { moves.push({ row, col: c }); } break; @@ -317,7 +326,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; @@ -327,7 +336,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; @@ -337,7 +346,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; @@ -347,7 +356,7 @@ function highlightMoves(piece, row, col) { if (board[r][c] === "") { moves.push({ row: r, col: c }); } else { - if (noirs.includes(board[r][c])) { + if (pieces_joueurs[opponent].includes(board[r][c])) { moves.push({ row: r, col: c }); } break; @@ -376,7 +385,7 @@ function movePiece(newRow, newCol) { if (!selectedPiece) return; // Vérifier si le mouvement est valide - const validMoves = highlightMoves(selectedPiece, selectedPosition.row, selectedPosition.col); + const validMoves = highlightMoves(currentPlayer,selectedPiece, selectedPosition.row, selectedPosition.col); console.log(validMoves); // Vérifie la structure des validMoves // Vérifier que validMoves est un tableau et qu'il contient des objets avec { row, col } @@ -390,7 +399,7 @@ function movePiece(newRow, newCol) { // Réinitialiser la pièce sélectionnée selectedPiece = null; selectedPosition = null; - + currentPlayer=(currentPlayer+1)%2; // Redessiner le plateau drawBoard(); drawPieces(); diff --git a/htdocs/page_acceuil.html b/htdocs/page_acceuil.html index fb30a0a495ecd7dc5ec77c0792ee6202f22fba8e..0b812f90962a1620d6c3deab4ab6661e4a0ee970 100644 --- a/htdocs/page_acceuil.html +++ b/htdocs/page_acceuil.html @@ -7,7 +7,7 @@ <link href="https://fonts.googleapis.com/css2?family=Libre+Baskerville&display=swap" rel="stylesheet"> <!-- Ajout de la police Libre Baskerville --> <link rel="stylesheet" href="style_page_acceuil.css"> </head> - + <body> <header> diff --git a/htdocs/page_jeu.html b/htdocs/page_jeu.html index 9a494cec9e4beff8be8c0eeab260dd92304805dd..64bc92d71ff310b3ba43cda53eadc4d96e9366a0 100644 --- a/htdocs/page_jeu.html +++ b/htdocs/page_jeu.html @@ -20,14 +20,14 @@ socket.on('hello', function(data) { console.log("Message du serveur : ", data); }); - + // Envoi d'un message vers le serveur socket.emit('message', { 'msg': 'Hello, serveur !' }); - + socket.emit('disconnect',{'msg': 'Le client est deco'}); // Optionnel : écouter d'autres événements, par exemple pour les erreurs socket.on('connect_error', function(err) { console.error("Erreur de connexion : ", err); - }); + }); }); </script> <canvas id="chessboard" width="480" height="480"></canvas> diff --git a/server.js b/server.js index 922767adc55abb85115362bba674cbcb1d0cb855..d5bd6dd14c42e288290079d7e56720bcbdcc3171 100644 --- a/server.js +++ b/server.js @@ -70,16 +70,17 @@ io.on('connection', function (socket) { // Envoyer un message "hello" au client socket.emit('hello', { 'this': 'is my data' }); - // Écouter un message du client (optionnel) socket.on('message', function (data) { console.log("Message reçu du client :", data); + socket.on('disconnect', () => { + console.log('Le client est déconnecté'); + }); }); + }); // Lancer le serveur sur le port 8080 server.listen(8080, () => { console.log("Serveur WebSocket démarré sur http://localhost:8080"); -}); - - +}); \ No newline at end of file