From ecaed8e3fe21297de87d217ede2d16a22e30dc13 Mon Sep 17 00:00:00 2001 From: Thomas de Brettes <thomas.de-brettes@etu.ec-lyon.fr> Date: Sun, 30 Mar 2025 16:25:18 +0200 Subject: [PATCH] =?UTF-8?q?=C3=A9chiquier=20qui=20tourne=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 2 +- htdocs/index.js | 34 ++++++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app.js b/app.js index 4cb8aeb..c32bad5 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 181de86..dde5f78 100644 --- a/htdocs/index.js +++ b/htdocs/index.js @@ -6,7 +6,8 @@ const player = { socketId: "", symbol: "X", turn: false, - win: false + win: false, + isBlackPlayer: false }; const socket = io(); @@ -162,11 +163,15 @@ function startGame(players) { const ennemyPlayer = players.find(p => p.socketId != player.socketId); ennemyUsername = ennemyPlayer.username; + + player.isBlackPlayer = !player.host; + if (player.host && player.turn) { setTurnMessage('alert-info', 'alert-success', "C'est ton tour de jouer"); } else { setTurnMessage('alert-success', 'alert-info', `C'est au tour de <b>${ennemyUsername}</b> de jouer`); } + draw(); } function setTurnMessage(classToRemove, classToAdd, html) { @@ -230,31 +235,34 @@ const pieces_joueurs = {0: ["p","t","c","f","q","k"],1:["P","T","C","F","Q","K"] function drawBoard() { for (let row = 0; row < 8; row++) { for (let col = 0; col < 8; col++) { - ctx.fillStyle = (row + col) % 2 === 0 ? "#F5DEB3" : "#8B4513"; + let displayRow = player.isBlackPlayer ? 7 - row : row; + let displayCol = player.isBlackPlayer ? 7 - col : col; + ctx.fillStyle = (displayRow + displayCol) % 2 === 0 ? "#F5DEB3" : "#8B4513"; ctx.fillRect(col * size, row * size, size, size); } } } + // Dessiner les pièces sur l'échiquier function drawPieces() { for (let row = 0; row < 8; row++) { for (let col = 0; col < 8; col++) { - const piece = board[row][col]; + let piece = board[row][col]; if (piece !== "") { let img = new Image(); img.src = "chess_pieces/" + pieceImages[piece]; img.onload = function () { - ctx.drawImage(img, col * size, row * size, size, size); - }; - img.onerror = function (e) { - console.log("Erreur de chargement de l'image : ", img.src); // En cas d'erreur de chargement + let displayRow = player.isBlackPlayer ? 7 - row : row; + let displayCol = player.isBlackPlayer ? 7 - col : col; + ctx.drawImage(img, displayCol * size, displayRow * size, size, size); }; } } } } + // Fonction principale pour dessiner l'échiquier function draw() { drawBoard(); @@ -262,7 +270,7 @@ function draw() { } // Appeler la fonction pour afficher l'échiquier -draw(); + //Mouvement des pièces sur l'échiquier @@ -271,8 +279,13 @@ let selectedPiece = null; let selectedPosition = null; canvas.addEventListener("click", function(event) { - const col = Math.floor(event.offsetX / size); - const row = Math.floor(event.offsetY / size); + let col = Math.floor(event.offsetX / size); + let row = Math.floor(event.offsetY / size); + + if (player.isBlackPlayer) { + col = 7 - col; + row = 7 - row; + } if (selectedPiece) { movePiece(row, col); @@ -281,6 +294,7 @@ canvas.addEventListener("click", function(event) { } }); + function selectPiece(row, col) { const piece = board[row][col]; -- GitLab