Skip to content
Snippets Groups Projects
Commit 49efcd0e authored by Elarouti Adam's avatar Elarouti Adam
Browse files

code de l'echec

parent 6b8da139
No related branches found
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 = 8080;
const port = 8060;
const io = require('socket.io')(http);
......@@ -67,7 +67,9 @@ io.on('connection', (socket) => {
socket.broadcast.emit('play', data); // On diffuse à tous les clients
});
socket.on('echec', () => {
socket.broadcast.emit('echec');
});
socket.on('play again', (roomId) => {
const room = rooms.find(r => r.id === roomId);
......
......@@ -108,18 +108,20 @@ socket.on('join room', (roomId) => {
});
socket.on('start game', (players) => {
console.log(players, "Le jeu commence");
//console.log(players, "Le jeu commence");
startGame(players);
console.log(player.isBlackPlayer)
//console.log(player.isBlackPlayer)
if (player.isBlackPlayer) {
document.getElementById('chessboard').classList.add('black-perspective');
console.log("échiquier inversé")
//console.log("échiquier inversé")
}
});
socket.on('echec', () => { // Fonction de callback correcte
document.getElementById("echec-message").classList.remove("d-none");
});
socket.on('play', (moveData) => {
console.log("[Client] Mouvement reçu : ", moveData.move.to.x, 'et', moveData.move.to.y,'et', tour, 'et', selectedPosition);
//console.log("[Client] Mouvement reçu : ", moveData.move.to.x, 'et', moveData.move.to.y,'et', tour, 'et', selectedPosition);
selectedPiece = moveData.move.piece;
row=moveData.move.from.x;
col=moveData.move.from.y;
......@@ -181,7 +183,7 @@ function startGame(players) {
draw();
ennemyUsername = ennemyPlayer.username;
tour = {currentPlayer: player, ennemyPlayer: ennemyPlayer};
console.log(ennemyPlayer);
//console.log(ennemyPlayer);
if (player.host && player.turn) {
setTurnMessage('alert-info', 'alert-success', "C'est ton tour de jouer");
} else {
......@@ -332,7 +334,8 @@ function highlightMoves(tour,piece, row, col) {
ennemyPieces = ["t", "c", "f", "q", "k", "p"];
}
let moves = [];
console.log(piece.toLowerCase() === "p");
if (piece.toLowerCase() === "p") {
if(row===6 && player.isBlackPlayer===false){
if (board[row + 2*direction][col] === "") {
......@@ -604,38 +607,38 @@ function find_pieces(piece,board){
}
}
// function echec(tour, board) {
// // Trouve la position du roi ennemi
// let kingRow, kingCol;
// if (player.turn === true) {
// attackingPlayer = player;
// [kingRow, kingCol] = find_pieces('k', board); // Roi noir (adverse) si c'est au joueur blanc de jouer
// } else {
// attackingPlayer = ennemyPlayer;
// [kingRow, kingCol] = find_pieces('K', board); // Roi blanc (adverse) si c'est au joueur noir de jouer
// }
function echec(board) {
// let allPositions = [];
// Trouve la position du roi ennemi
let piecesAttaquant = [];
let kingRow, kingCol;
let allPositions = [];
// for (let i = 0; i < board.length; i++) {
// for (let j = 0; j < board[i].length; j++) {
// const piece = board[i][j];
// if (piece) {
// const moves = highlightMoves(piece, board, i, j);
// allPositions.push({ piece, position: { i, j }, moves });
if (player.isBlackPlayer === false) {
[kingRow, kingCol] = find_pieces("K", board); // Roi noir (adverse) si c'est au joueur blanc de jouer
piecesAttaquant = ["t", "c", "f", "q", "k", "p"];
} else {
[kingRow, kingCol] = find_pieces("k", board); // Roi blanc (adverse) si c'est au joueur noir de jouer
piecesAttaquant = ["T", "C", "F", "Q", "K", "P"];
}
// // 🔍 Vérifie si un des mouvements possibles atteint le roi
// for (let move of moves) {
// if (move.i === kingRow && move.j === kingCol) {
// console.log(`Le roi est en échec par la pièce ${piece} en position (${i}, ${j})`);
// return true; // Roi est en échec
// }
// }
// }
// }
// }
// }
for (let i = 0; i < board.length; i++) {
for (let j = 0; j < board[i].length; j++) {
const pieceAttack = board[i][j];
if (pieceAttack !== "" && piecesAttaquant.includes(pieceAttack)) {
moves=highlightMoves(board,pieceAttack , i, j)
for (k =0; k<moves.length;k++){
if (moves[k].row === kingRow && moves[k].col === kingCol) return true;
}
}
}
}
return false;
}
function movePiece(piece, newRow, newCol) {
document.getElementById("echec-message").classList.add("d-none");
if (!piece) return;
// Vérifier si le mouvement est valide
......@@ -648,9 +651,9 @@ function movePiece(piece, newRow, newCol) {
// Déplacer la pièce
board[newRow][newCol] = piece;
board[selectedPosition.row][selectedPosition.col] = "";
console.log(echec(board));
// Réinitialiser la pièce sélectionnée
console.log(selectedPosition.row,selectedPosition.col)
//currentPlayer=(currentPlayer+1)%2;
socket.emit('play', {
......@@ -661,15 +664,18 @@ function movePiece(piece, newRow, newCol) {
piece: selectedPiece // Nom de la pièce (ex: "pion", "tour", etc.)
}
});
if (echec(board)){
socket.emit('echec');
}
setTurnMessage('alert-success', 'alert-info', `C'est au tour de <b>${ennemyUsername}</b> de jouer`)
player.turn = false;
selectedPiece =null;
selectedPosition = null;
[tour.currentPlayer, tour.ennemyPlayer] = [tour.ennemyPlayer, tour.currentPlayer];
// if (echec(tour,board)===true){
// console.log('echeeeeeeeeecs')
// }
// Redessiner le plateau
draw();
} else {
......
......@@ -88,6 +88,7 @@
</div>
</div>
</div>
<div id="echec-message" class="d-none">Échec !</div>
<canvas id="chessboard" class="board" width="480" height="480"></canvas>
<script src="./jquery/jquery.min.js"></script>
<script src="./bootstrap/js/bootstrap.min.js"></script>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment