From 8c7e2e3d1f3f607cd0cb5aa12df5e35ae9496525 Mon Sep 17 00:00:00 2001 From: Didictateur Date: Sat, 22 Nov 2025 19:55:44 +0100 Subject: [PATCH] =?UTF-8?q?m=C3=A9lange=20de=20la=20pioche?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server.js b/server.js index 455ca72..2550c08 100644 --- a/server.js +++ b/server.js @@ -99,7 +99,7 @@ function buildDefaultDeck(){ // ['brouillard de guerre','Les joueur ne peuvent voir que au alentour de leurs pièces pendant 4 tours'], // ['changer la pièce à capturer','Le joueur choisie la nouvelle pièce jouant le rôle de roi sans la révéler'], // ['trou de ver','Deux cases du plateau deviennent maintenant la même'], - // ['jouer deux fois','Le joueur peut déplacer deux pièces'], + ['jouer deux fois','Le joueur peut déplacer deux pièces'], // ['annulation d une carte','Annule l effet d une carte qui est jouée par l adversaire'], // ['placement de mines','Le joueur place une mine sur une case vide sans la révéler au joueur adverse. Une pièce qui se pose dessus explose et est capturée par le joueur ayant placé la mine'], // ['vole d une pièce','Désigne une pièce non roi qui change de camp'], @@ -179,7 +179,12 @@ function drawCardForPlayer(room, playerId){ } } if(room.deck.length === 0) return null; // no cards even after reshuffle - // pick random index + // shuffle deck before drawing (always shuffle to ensure randomness) + for(let i = room.deck.length - 1; i > 0; i--){ + const j = Math.floor(Math.random() * (i + 1)); + const tmp = room.deck[i]; room.deck[i] = room.deck[j]; room.deck[j] = tmp; + } + // pick random index from the freshly shuffled deck const idx = Math.floor(Math.random() * room.deck.length); const card = room.deck.splice(idx,1)[0]; // normalize title capitalization just in case this deck was created earlier with inconsistent casing