refactor: fin de la premiere refactorisation du projet

This commit is contained in:
2026-08-02 22:27:00 +02:00
parent c709064062
commit 45ad31d0ae
14 changed files with 299 additions and 142 deletions

View File

@@ -1 +1,11 @@
/*
config.js
centralise les constante de reglage du jeu
*/
module.export = {
PORT: process.env.PORT || 3000,
GAME_DURATION: 60,
DOORS_TO_WIN: 3,
};

View File

@@ -4,3 +4,51 @@
Sert a regrouper toute la logique autour des portes
*/
/*
c'est ici uniquement que la logique de victoire ou defaite est faite
*/
const { correctDoor, startPosition } = require("./maze");
const { DOORS_TO_WIN } = require("./config");
fonction handleDoorReached(wSS, socket, position) {
const pairState = socket.data.pairState;
if(!pairState || pairState.gameOver) return; // partie deja terminee
const partnerId = socket.data.partnerId;
const partnerSocket = wSS.sockets.sockets.get(partnerId);
const isCorrect = position.x === correctDoor.x && position.y === correctDoor.y;
if (!isCorrect){
pairState.gameOver = true;
const result = { correct: false };
socket.emit("door_result", result);
if (partnerSocket) partnerSocket.emit("door_result", result);
result;
}
pairState.doorsPassed++;
if (pairState.doorPassed >= DOORS_TO_WIN) {
pairState.gameOver = true;
socket.emit("victory");
if (partnerSocket) partnerSocket.emit("victory");
return;
}
const temp = socket.data.role;
socket.data.role = partnerSocket.data.role;
partnerSocket.data.role = temp;
socket.emit("door_result", { correct: true});
socket.emit("new_round", startPosition);
socket.emit("role", socket.data.role);
if (partnerSocket) {
partnerSocket.emit("door_result", { correct: true });
partnerSocket.emit("new_round", startPosition);
partnerSocket.emit("role", partnerSocket.data.role);
}
}
module.exports = { handleDoorReached };

View File

@@ -1 +1,12 @@
/*
gameState.js
Etat global du serveur (pas juste la partie entre deux joueurs)
On exporte l'objet plutot que la variable
*/
const gameState = {
waitingPlayer: null,
};
module.exports = gameState;

View File

@@ -1 +1,12 @@
/*
maze.js
le serveur sais ou sont les bonnes et mauvaises porte et compare la position envoyee par le joueur et la solution
possede aussi l'information du point de depart
*/
const correctDoor = { x: 3, y: 6};
const startPosition = { x: 1, y: 1 };
module.exports = { correctDoor, startPosition };
module.exports = { correctDoor, startPosition };

View File

@@ -1 +1,30 @@
/*
timer.js
minuteur autoritaire cote serveur
*/
const GAME_DURATION = {"./config"};
fonction startTimer(socket, partnerSocket, pairState) {
const interval = setInterval(() => {
if (pairState.gameOver) {
clearInterval(interval);
return;
}
pairState.timeLeft--;
socket.emit("timer", pairState.timeLeft);
partnerSocket.emit("timer", pairState.timeLeft);
if (pairState.timeLeft <= 0) {
pairState.gameOver = true;
socket.emit("timeout");
partnerSocket.emit("timeout");
clearInterval(interval);
}
}, 1000);
}
module.exports = { startTimer };