diff --git a/app.js b/app.js index 2ec5012dc8a611a853140c7a811e0b291e36ef99..39373d0f4954d3b1f399e90b6722a16991452e2d 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 = 8060; +const port = 8080; const io = require('socket.io')(http); diff --git a/htdocs/index.js b/htdocs/index.js index af7e317f2f6faebf110173b33834e804f8aa18e5..2dece84ba92e23ed91275fbabcae4634e7ce939b 100644 --- a/htdocs/index.js +++ b/htdocs/index.js @@ -17,8 +17,8 @@ const player = { symbol: "X", turn: false, win: false, - isBlackPlayer: false, - pieces: ["t", "c", "f", "q", "k", "p"] + isBlackPlayer: true, + pieces: ["T", "C", "F", "Q", "K", "P"] }; @@ -83,6 +83,8 @@ $("#form").on('submit', function (e) { player.roomId = roomId; } else { player.host = true; + player.isBlackPlayer = false; + player.pieces = ["t", "c", "f", "q", "k", "p"]; player.turn = true; } @@ -107,6 +109,7 @@ socket.on('join room', (roomId) => { socket.on('start game', (players) => { console.log(players, "Le jeu commence"); startGame(players); + console.log(player.isBlackPlayer) }); @@ -118,8 +121,17 @@ socket.on('play', (moveData) => { newRow=moveData.move.to.x; newCol=moveData.move.to.y; selectedPosition = { row,col }; + + board[newRow][newCol] = moveData.move.piece; + board[selectedPosition.row][selectedPosition.col] = ""; + + // Réinitialiser la pièce sélectionnée + + selectedPiece =null; + selectedPosition = null; + draw() // 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 + //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é !`); @@ -133,8 +145,8 @@ socket.on('play', (moveData) => { // return; // } - setTurnMessage('alert-info', 'alert-success', "C'est ton tour de jouer"); - player.turn = true; + setTurnMessage('alert-info', 'alert-success', "C'est ton tour de jouer"); + player.turn = true; // } else { // if (player.win) { // $("#turn-message").addClass('alert-success').html("Félicitations, tu as gagné la partie !"); @@ -148,8 +160,6 @@ socket.on('play', (moveData) => { // return; // } - setTurnMessage('alert-success', 'alert-info', `C'est au tour de <b>${ennemyUsername}</b> de jouer`) - player.turn = false; // } }); @@ -157,13 +167,14 @@ socket.on('play again', (players) => { restartGame(players); }) + function startGame(players) { restartArea.classList.add('d-none'); waitingArea.classList.add('d-none'); turnMsg.classList.remove('d-none'); const ennemyPlayer = players.find(p => p.socketId != player.socketId); - ennemyPlayer.isBlackPlayer=true; - ennemyPlayer.pieces = ["P","T","C","F","Q","K"]; + + draw(); ennemyUsername = ennemyPlayer.username; tour = {currentPlayer: player, ennemyPlayer: ennemyPlayer}; @@ -257,7 +268,7 @@ function draw() { } // Appeler la fonction pour afficher l'échiquier -draw(); + //Mouvement des pièces sur l'échiquier @@ -269,14 +280,14 @@ canvas.addEventListener("click", function(event) { const row = Math.floor(event.offsetY / size); if (selectedPiece) { - socket.emit('play', { + /* 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); @@ -284,16 +295,18 @@ canvas.addEventListener("click", function(event) { }); function selectPiece(row, col) { + if (player.turn) { const current_piece = board[row][col]; selectedPosition = {row, col}; - if (current_piece !== "" && tour.currentPlayer.pieces.includes(current_piece)) { // Vérifier que ce n'est pas une case vide + if (current_piece !== "" && player.pieces.includes(current_piece)) { // Vérifier que ce n'est pas une case vide selectedPiece = current_piece; highlightMoves(tour,current_piece, row, col); } } +} -function highlightMoves(player,piece, row, col) { - if (tour.currentPlayer.isBlackPlayer===false){ +function highlightMoves(tour,piece, row, col) { + if (player.isBlackPlayer===false){ direction=-1; } else{direction=1; @@ -301,12 +314,12 @@ function highlightMoves(player,piece, row, col) { let moves = []; console.log(piece.toLowerCase() === "p"); if (piece.toLowerCase() === "p") { - if(row===6 && tour.currentPlayer.isBlackPlayer===false){ + if(row===6 && player.isBlackPlayer===false){ if (board[row + 2*direction][col] === "") { moves.push({row: row + 2*direction,col}); } } - if(row===1 && tour.currentPlayer.isBlackPlayer===true){ + if(row===1 && player.isBlackPlayer===true){ if (board[row +2*direction][col] === "") { moves.push({row: row + 2*direction,col}); } @@ -608,10 +621,22 @@ function movePiece(piece, newRow, newCol) { board[selectedPosition.row][selectedPosition.col] = ""; // Réinitialiser la pièce sélectionnée + console.log(selectedPosition.row,selectedPosition.col) + + //currentPlayer=(currentPlayer+1)%2; + socket.emit('play', { + move: { + from:{ x:selectedPosition.row, y:selectedPosition.col + }, + to: { x: newRow, y: newCol }, // Position d'arrivée + piece: selectedPiece // Nom de la pièce (ex: "pion", "tour", etc.) + } + }); + setTurnMessage('alert-success', 'alert-info', `C'est au tour de <b>${ennemyUsername}</b> de jouer`) + player.turn = false; selectedPiece =null; selectedPosition = null; - //currentPlayer=(currentPlayer+1)%2; [tour.currentPlayer, tour.ennemyPlayer] = [tour.ennemyPlayer, tour.currentPlayer]; // if (echec(tour,board)===true){ // console.log('echeeeeeeeeecs')