Add Win Function
This commit is contained in:
@@ -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()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -495,6 +495,78 @@ $players[0]['is_dealer'] = 1; // Mettre à jour aussi dans la variable locale po
|
|||||||
current_blind = Math.max(...blinds);
|
current_blind = Math.max(...blinds);
|
||||||
console.log("Blind actuel recalculé :", current_blind);
|
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>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -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()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
Reference in New Issue
Block a user