From 7230c9a15994f7a62ccd0f0c71d345211be21b77 Mon Sep 17 00:00:00 2001 From: Adam <adam.elarouti@etu.ec-lyon.fr> Date: Sun, 30 Mar 2025 23:50:41 +0200 Subject: [PATCH] vrai dialogue entre iencli --- app.js | 9 +++--- htdocs/index.js | 77 ++++++++++++++++++++++++------------------------- 2 files changed, 42 insertions(+), 44 deletions(-) diff --git a/app.js b/app.js index 9379419..2ec5012 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); @@ -61,12 +61,13 @@ io.on('connection', (socket) => { socket.on('get rooms', () => { io.to(socket.id).emit('list rooms', rooms); }); + socket.on('play', (data) => { + console.log(`[Server] Play reçu : ${JSON.stringify(data)}`); // Debugging - socket.on('play', (g) => { - console.log(g); - socket.broadcast.emit('play', g); // On renvoie l'objet complet aux autres joueurs + socket.broadcast.emit('play', data); // On diffuse à tous les clients }); + socket.on('play again', (roomId) => { const room = rooms.find(r => r.id === roomId); diff --git a/htdocs/index.js b/htdocs/index.js index d98bf60..e50f344 100644 --- a/htdocs/index.js +++ b/htdocs/index.js @@ -107,18 +107,18 @@ socket.on('start game', (players) => { }); -socket.on('play', (f) => { - console.log(f); - console.log(board); - - player.playedMove=f; - console.log(player.playedMove); - draw(player); +socket.on('play', (moveData) => { - // if (ennemyPlayer.socketId !== player.socketId && !ennemyPlayer.turn) { - - // player.playedMove = ennemyPlayer.playedMove; + console.log("[Client] Mouvement reçu : ", moveData.move.to.x, 'et', moveData.move.to.y,'et', currentPlayer, 'et', selectedPosition); + selectedPiece = moveData.move.piece; + row=moveData.move.from.x; + col=moveData.move.from.y; + newRow=moveData.move.to.x; + newCol=moveData.move.to.y; + selectedPosition = { row,col }; + // Ne remplace PAS l'échiquier complet, mais applique le coup reçu + movePiece(moveData.move.piece, newRow, newCol); // Applique le coup reçu sur l'échiquier local et redessine l'échiquier // if (ennemyPlayer.win) { // setTurnMessage('alert-info', 'alert-danger', `C'est perdu ! <b>${ennemyPlayer.username}</b> a gagné !`); @@ -161,7 +161,7 @@ function startGame(players) { waitingArea.classList.add('d-none'); turnMsg.classList.remove('d-none'); const ennemyPlayer = players.find(p => p.socketId != player.socketId); - draw(ennemyPlayer); + draw(); ennemyUsername = ennemyPlayer.username; if (player.host && player.turn) { @@ -230,10 +230,10 @@ function drawBoard() { } // Dessiner les pièces sur l'échiquier -function drawPieces(player) { +function drawPieces() { for (let row = 0; row < 8; row++) { for (let col = 0; col < 8; col++) { - const piece = player.playedMove[row][col]; + const piece = board[row][col]; if (piece !== "") { let img = new Image(); img.src = "chess_pieces/" + pieceImages[piece]; @@ -249,14 +249,13 @@ function drawPieces(player) { } // Fonction principale pour dessiner l'échiquier -function draw(player) { +function draw() { drawBoard(); - drawPieces(player); + drawPieces(); } // Appeler la fonction pour afficher l'échiquier -draw(player); - +draw(); //Mouvement des pièces sur l'échiquier @@ -268,19 +267,26 @@ canvas.addEventListener("click", function(event) { const row = Math.floor(event.offsetY / size); if (selectedPiece) { - movePiece(player,row, col); + socket.emit('play', { + move: { + from:{ x:selectedPosition.row, y:selectedPosition.col + }, + to: { x: row, y: col }, // Position d'arrivée + piece: selectedPiece // Nom de la pièce (ex: "pion", "tour", etc.) + } + }); + movePiece(selectedPiece, row, col); } else { selectPiece(row, col); } }); function selectPiece(row, col) { - const piece = board[row][col]; - - if (piece !== "" && pieces_joueurs[currentPlayer].includes(piece)) { // Vérifier que ce n'est pas une case vide - selectedPiece = piece; - selectedPosition = { row, col }; - highlightMoves(currentPlayer,piece, row, col); + const current_piece = board[row][col]; + selectedPosition = {row, col}; + if (current_piece !== "" && pieces_joueurs[currentPlayer].includes(current_piece)) { // Vérifier que ce n'est pas une case vide + selectedPiece = current_piece; + highlightMoves(currentPlayer,current_piece, row, col); } } @@ -554,39 +560,30 @@ function highlightMoves(player,piece, row, col) { -function movePiece(player,newRow, newCol) { - if (!selectedPiece) return; +function movePiece(piece, newRow, newCol) { + if (!piece) return; // Vérifier si le mouvement est valide - const validMoves = highlightMoves(currentPlayer,selectedPiece, selectedPosition.row, selectedPosition.col); - + const validMoves = highlightMoves(currentPlayer,piece, selectedPosition.row, selectedPosition.col); // Vérifier que validMoves est un tableau et qu'il contient des objets avec { row, col } const isValidMove = Array.isArray(validMoves) && validMoves.some(m => m.row === newRow && m.col === newCol); if (isValidMove) { // Déplacer la pièce - board[newRow][newCol] = selectedPiece; + board[newRow][newCol] = piece; board[selectedPosition.row][selectedPosition.col] = ""; // Réinitialiser la pièce sélectionnée - selectedPiece = null; + + selectedPiece =null; selectedPosition = null; currentPlayer=(currentPlayer+1)%2; // Redessiner le plateau - drawBoard(); - drawPieces(player); - player.playedMove=board; - console.log("[Client] Envoi des données : ", { - socketId: player.socketId, - playedMove: board // ou ce qui est nécessaire pour l'échiquier - }); - socket.emit('play', player.playedMove // ou quel que soit le nom de ta variable représentant l'échiquier - ); + draw(); } else { // Si le mouvement est invalide, tu pourrais afficher un message console.log("Mouvement invalide !"); selectedPiece=null; - } } -- GitLab