Add Win Function

This commit is contained in:
2026-03-03 19:38:21 +01:00
parent fde9c1f911
commit ed405a49b6
3 changed files with 173 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
<?php
require_once 'db.php';
session_start();
header('Content-Type: application/json');
$game_id = intval($_POST['game_id']);
$winner_id = intval($_POST['winner_id']);
try {
// 1. Vérifier que le joueur est bien dans la partie
$stmt = $db->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()]);
}
?>
+72
View File
@@ -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 = `
<h2>La partie est terminée ! Qui a gagné ?</h2>
<?php foreach ($players as $p): ?>
<button class="btn-win" onclick="declareWinner(<?php echo $p['id']; ?>)"><?php echo htmlspecialchars($p['name']); ?></button>
<?php endforeach; ?>
`;
// 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 = `
<h2>${data.winner_name} gagne la partie et remporte ${data.amount_won} 🪙 !</h2>
<button class="btn-back" onclick="window.location.href='index.php'">Retour à l'accueil</button>
<button class="btn-replay" onclick="StartNewGame()">Rejouer</button>
`;
}
} 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));
}
</script>
</body>
</html>
+59
View File
@@ -0,0 +1,59 @@
<?php
require_once 'db.php';
session_start();
header('Content-Type: application/json');
$game_id = intval($_POST['game_id']);
try {
// 1. Vérifier que la partie existe
$stmt = $db->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()]);
}
?>