Add other game actions

This commit is contained in:
2026-03-01 21:33:56 +01:00
parent a8bde6b851
commit b5bd093c5d
2 changed files with 149 additions and 14 deletions
+33
View File
@@ -0,0 +1,33 @@
<?php
require_once 'db.php';
header('Content-Type: application/json');
$game_id = intval($_POST['game_id']);
$current_player_id = intval($_POST['current_player_id']);
try {
// 1. Récupérer l'argent du joueur actuel
$stmt = $db->prepare("SELECT money FROM players WHERE id = ?");
$stmt->execute([$current_player_id]);
$player = $stmt->fetch();
$money = $player['money'];
// 2. Mettre à jour la blind du joueur actuel avec tout son argent
$stmt = $db->prepare("UPDATE players SET current_bet = ? WHERE id = ?");
$stmt->execute([$money, $current_player_id]);
// 3. Retirer tout l'argent du joueur actuel
$stmt = $db->prepare("UPDATE players SET money = 0 WHERE id = ?");
$stmt->execute([$current_player_id]);
// 4. Ajouter le montant au pot de la partie
$stmt = $db->prepare("UPDATE games SET pot = pot + ? WHERE id = ?");
$stmt->execute([$money, $game_id]);
echo json_encode(['success' => true]);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}
?>
+116 -14
View File
@@ -136,12 +136,59 @@ foreach ($players as $p) {
function Suivre() {
console.log("Action : Suivre");
sendActionToServer('call');
// Appeler les codes PHP pour retirer l'argent du joueur
getCurrentGameBlind(); // On récupère la blind actuelle pour l'afficher dans le pot
let formData = new FormData();
formData.append('game_id', actualGameID);
formData.append('amount', current_blind); // On envoie la blind actuelle pour que le PHP puisse faire le lien
fetch('remove_money.php', {
method: 'POST',
body: formData
})
.then(r => r.json())
.then(data => {
if (data.success) {
console.log("Mise suivie avec succès !");
UpdateLabels(); // Met à jour les étiquettes de monnaie
} else {
alert("Erreur : " + data.message);
}
})
getCurrentPlayer(); // On récupère le joueur actuel pour vérifier son solde
getActualPlayerMoney(); // On récupère son argent pour vérifier s'il peut suivre
if (money[currentPlayerId] < current_blind) {
alert("Vous n'avez pas assez d'argent pour suivre, vous devez vous coucher ou faire tapis.");
return;
}
UpdateLabels(); // On met a jour les valeurs affichées
changePlayer(); // Enfin on change de joueur
}
function SeCoucher() {
console.log("Action : Se coucher");
sendActionToServer('fold');
let formData = new FormData();
formData.append('game_id', actualGameID);
formData.append('action', 'fold'); // On envoie une action spécifique pour se coucher
fetch('change_player.php', {
method: 'POST',
body: formData
})
.then(r => r.json())
.then(data => {
if (data.success) {
console.log("Joueur couché avec succès !");
UpdateLabels(); // Met à jour les étiquettes de monnaie
changePlayer(); // On change de joueur après s'être couché
} else {
alert("Erreur : " + data.message);
}
})
.catch(err => console.error("Erreur fetch:", err));
UpdateLabels(); // On met a jour les valeurs affichées
changePlayer(); // Enfin on change de joueur
}
function Relancer() {
@@ -214,24 +261,55 @@ foreach ($players as $p) {
function Tapis() {
console.log("Action : TAPIS !");
sendActionToServer('allin');
let currentPlayerId = getCurrentPlayer(); // On récupère la blind actuelle du joueur pour l'afficher dans le pot
let formData = new FormData();
formData.append('game_id', actualGameID);
formData.append('current_player_id', currentPlayerId); // On envoie aussi l'ID du joueur actuel pour que le PHP puisse faire le lien
fetch('all_in.php', {
method: 'POST',
body: formData
})
.then(r => r.json())
.then(data => {
if (data.success) {
console.log("TAPIS effectué avec succès !");
UpdateLabels(); // Met à jour les étiquettes de monnaie
} else {
alert("Erreur : " + data.message);
}
})
UpdateLabels(); // On met a jour les valeurs affichées
changePlayer(); // Enfin on change de joueur
}
// Fonction pour mettre à jour les étiquettes de monnaie sur l'écran
function UpdateLabels() {
for (const id in money) {
const label = document.getElementById(`label-${id}`);
if (label) {
label.innerText = (money[id] - (blinds[id] || 0)) + " 🪙";
// On récupère les nouvelles valeurs depuis le serveur
getActualPlayerMoney();
getActualPlayerBlind();
getActualGameBlind();
getTotalGameBlind();
// Ensuite, on met à jour les éléments du DOM avec les nouvelles valeurs
document.querySelectorAll('.player-slot').forEach(slot => {
const playerId = slot.getAttribute('data-id');
const playerInfo = players.find(p => p.id == playerId);
if (playerInfo) {
slot.querySelector('.player-money').textContent = playerInfo.money + " 🪙";
slot.querySelector('.player-bet').textContent = "Mise: " + playerInfo.blind + " 🪙";
}
}
});
// Mettre à jour le pot et la mise actuelle
document.getElementById('main-pot').textContent = totalBlind + " 🪙";
document.getElementById('current-bet').textContent = currentBlind + " 🪙";
}
function changePlayer() {
console.log("Demande de changement de joueur...");
// On utilise la fonction générique qu'on a créée ensemble
// Si tu ne l'as pas, voici le code direct :
getActualPlayerMoney();
getCurrentPlayer();
let currentPlayerMoney = money[currentPlayerId] || 0;
let formData = new FormData();
formData.append('game_id', actualGameID);
formData.append('action', 'next_player'); // On envoie une action spécifique
@@ -250,11 +328,13 @@ foreach ($players as $p) {
}
})
.catch(err => console.error("Erreur fetch:", err));
if (currentPlayerMoney <= 0) {
alert("Ce joueur est tapis ou couché, joueur suivant"); // Si le joueur n'a plus d'argent, on l'empêche de changer de joueur
changePlayer(); // Appel récursif pour sauter au joueur suivant
return;
}
}
// Au chargement, on bloque les actions tant que le guide n'est pas fini
window.onload = () => enableActions(false);
// Ta fonction deleteGame déjà existante (rappel)
function deleteGame(idPartie) {
if (confirm("Supprimer la partie ?")) {
@@ -266,6 +346,28 @@ foreach ($players as $p) {
}
}
function getCurrentPlayer() {
let formData = new FormData();
formData.append('game_id', actualGameID);
fetch('get_current_player.php', {
method: 'POST',
body: formData
})
.then(r => r.json())
.then(data => {
if (data.success) {
currentPlayerId = data.player_id; // On stocke l'ID du joueur actuel dans une variable globale
return data.player_id; // On retourne l'ID du joueur actuel
} else {
alert("Erreur : " + data.message);
} else {
alert("Erreur : " + data.message);
}
})
.catch(err => console.error("Erreur fetch:", err));
}
function getActualPlayerMoney() {
let formData = new FormData();
formData.append('game_id', actualGameID);