Skip to content
Snippets Groups Projects
Commit fdb40dd0 authored by De Brettes Thomas's avatar De Brettes Thomas
Browse files

Tour à tour qui fonctionne ENFINNNNNNNN

parent 1c129233
Branches
No related tags found
No related merge requests found
......@@ -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);
......
......@@ -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é !`);
......@@ -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')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment