From ed405a49b699b875266ec03a26d2495415c0d4ca Mon Sep 17 00:00:00 2001 From: Whykioh Date: Tue, 3 Mar 2026 19:38:21 +0100 Subject: [PATCH] Add Win Function --- poker-paf/declare_winner.php | 42 +++++++++++++++++++++ poker-paf/game.php | 72 ++++++++++++++++++++++++++++++++++++ poker-paf/start_new_game.php | 59 +++++++++++++++++++++++++++++ 3 files changed, 173 insertions(+) create mode 100644 poker-paf/declare_winner.php create mode 100644 poker-paf/start_new_game.php diff --git a/poker-paf/declare_winner.php b/poker-paf/declare_winner.php new file mode 100644 index 0000000..b2628fb --- /dev/null +++ b/poker-paf/declare_winner.php @@ -0,0 +1,42 @@ +prepare("SELECT id FROM players WHERE game_id = ? AND id = ?"); + $stmt->execute([$game_id, $winner_id]); + if (!$stmt->fetch()) { + throw new Exception("Le joueur n'est pas dans cette partie."); + } + + // 2. Récupérer le pot total de la partie + require_once 'get_total_game_blind.php'; + $total_pot = get_total_game_blind($game_id); + + // 3. Mettre à jour le solde du gagnant + $stmt = $db->prepare("UPDATE players SET money = money + ? WHERE id = ?"); + $stmt->execute([$total_pot, $winner_id]); + + // 4. Remettre à 0 le pot total de la partie + $stmt = $db->prepare("UPDATE games SET pot = 0 WHERE id = ?"); + $stmt->execute([$game_id]); + + // 5. Remettre à 0 les mises de tous les joueurs + $stmt = $db->prepare("UPDATE players SET current_bet = 0 WHERE game_id = ?"); + $stmt->execute([$game_id]); + + // 6. Remettre à 0 la blind actuelle de la partie + $stmt = $db->prepare("UPDATE games SET last_bet = 0 WHERE id = ?"); + $stmt->execute([$game_id]); + +} catch (Exception $e) { + echo json_encode(['success' => false, 'message' => $e->getMessage()]); +} + +?> \ No newline at end of file diff --git a/poker-paf/game.php b/poker-paf/game.php index edc08b9..14aae74 100644 --- a/poker-paf/game.php +++ b/poker-paf/game.php @@ -495,6 +495,78 @@ $players[0]['is_dealer'] = 1; // Mettre à jour aussi dans la variable locale po current_blind = Math.max(...blinds); console.log("Blind actuel recalculé :", current_blind); } + + # --- FONCTION EN CAS DE VICTOIRE --- + function EndGame(winnerId, amountWon) { + // 1. On récupère le conteneur + const container = document.getElementById('table-container'); + + // 2. On crée une nouvelle ligne + const newRow = document.createElement('div'); + newRow.className = 'win-panel'; + + + // 3. On met le HTML dedans (avec le bouton supprimer intégré) + newRow.innerHTML = ` +

La partie est terminée ! Qui a gagné ?

+ + + + `; + + // 4. On l'ajoute au conteneur + container.appendChild(newRow); + + } + + function declareWinner(winnerId) { + let formData = new FormData(); + formData.append('game_id', actualGameID); + formData.append('winner_id', winnerId); + + fetch('declare_winner.php', { + method: 'POST', + body: formData + }) + .then(r => r.json()) + .then(data => { + if (data.success) { + alert(data.winner_name + " gagne la partie et remporte " + data.amount_won + " 🪙 !"); + // Changer la div "win-panel" pour afficher le gagnant + const winPanel = document.querySelector('.win-panel'); + if (winPanel) { + winPanel.innerHTML = ` +

${data.winner_name} gagne la partie et remporte ${data.amount_won} 🪙 !

+ + + `; + } + } else { + alert("Erreur : " + data.message); + } + }) + .catch(err => console.error("Erreur fetch:", err)); + } + + function StartNewGame() { + let formData = new FormData(); + formData.append('game_id', actualGameID); + + fetch('start_new_game.php', { + method: 'POST', + body: formData + }) + .then(r => r.json()) + .then(data => { + if (data.success) { + alert("Nouvelle partie lancée !"); + location.reload(); // On recharge la page pour afficher la nouvelle partie + } else { + alert("Erreur : " + data.message); + } + }) + .catch(err => console.error("Erreur fetch:", err)); + } diff --git a/poker-paf/start_new_game.php b/poker-paf/start_new_game.php new file mode 100644 index 0000000..3969f5e --- /dev/null +++ b/poker-paf/start_new_game.php @@ -0,0 +1,59 @@ +prepare("SELECT id FROM games WHERE id = ?"); + $stmt->execute([$game_id]); + if (!$stmt->fetch()) { + throw new Exception("La partie n'existe pas."); + } + + // 2. Faire en sorte que le dealer de la partie soit le joueur suivant l'actuel dealer + $stmt = $db->prepare("SELECT id FROM player WHERE is_dealer = 1 AND game_id = ?"); + $stmt->execute([$game_id]); + $current_dealer = $stmt->fetch(); + if ($current_dealer) { + $current_dealer_id = $current_dealer['id']; + // On remet à 0 le dealer actuel + $stmt = $db->prepare("UPDATE player SET is_dealer = 0 WHERE id = ?"); + $stmt->execute([$current_dealer_id]); + // On cherche le prochain dealer + $stmt = $db->prepare("SELECT id FROM player WHERE game_id = ? AND id > ? ORDER BY id ASC LIMIT 1"); + $stmt->execute([$game_id, $current_dealer_id]); + $next_dealer = $stmt->fetch(); + if (!$next_dealer) { // Si on est au dernier, on revient au premier + $stmt = $db->prepare("SELECT id FROM player WHERE game_id = ? ORDER BY id ASC LIMIT 1"); + $stmt->execute([$game_id]); + $next_dealer = $stmt->fetch(); + } + $next_dealer_id = $next_dealer['id']; + // On met à jour le nouveau dealer + $stmt = $db->prepare("UPDATE player SET is_dealer = 1 WHERE id = ?"); + $stmt->execute([$next_dealer_id]); + } else { + // Si aucun dealer n'est défini, on choisit le premier joueur comme dealer + $stmt = $db->prepare("SELECT id FROM player WHERE game_id = ? ORDER BY id ASC LIMIT 1"); + $stmt->execute([$game_id]); + $first_player = $stmt->fetch(); + if ($first_player) { + $first_player_id = $first_player['id']; + $stmt = $db->prepare("UPDATE player SET is_dealer = 1 WHERE id = ?"); + $stmt->execute([$first_player_id]); + } else { + throw new Exception("Aucun joueur dans la partie pour devenir dealer."); + } + + + + + } catch (Exception $e) { + echo json_encode(['success' => false, 'message' => $e->getMessage()]); +} + +?> \ No newline at end of file