From fdb40dd0f28544387486b6b9c885967aa6e25df0 Mon Sep 17 00:00:00 2001
From: Thomas de Brettes <thomas.de-brettes@etu.ec-lyon.fr>
Date: Mon, 31 Mar 2025 22:09:44 +0200
Subject: [PATCH] =?UTF-8?q?Tour=20=C3=A0=20tour=20qui=20fonctionne=20ENFIN?=
 =?UTF-8?q?NNNNNNN?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app.js          |  2 +-
 htdocs/index.js | 61 ++++++++++++++++++++++++++++++++++---------------
 2 files changed, 44 insertions(+), 19 deletions(-)

diff --git a/app.js b/app.js
index 2ec5012..39373d0 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 af7e317..2dece84 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')
-- 
GitLab