Ajout d'un easteregg

This commit is contained in:
Esteban
2026-07-03 10:56:54 +02:00
parent 542910a15d
commit 6164f7eaae
15 changed files with 2626 additions and 141 deletions
+51
View File
@@ -0,0 +1,51 @@
<?php
// Classement public du jeu "Presse-Citron" (les 15 meilleurs scores cumulés), avec un
// peu plus de détail que le simple score : nombre de bâtiments possédés (calculé depuis
// game_state), niveau de prestige, date de dernière partie. Lecture seule, sans connexion.
require_once(__DIR__ . '/../functions/security.php');
require_once('../functions/databaseConnection.php');
header('Content-Type: application/json; charset=utf-8');
try {
$stmt = $dbh->prepare('
SELECT id, username, score, lifetime_score, prestige_level, prestige_bonus, game_state, last_played, created_at
FROM lemon_players
ORDER BY lifetime_score DESC
LIMIT 15
');
$stmt->execute();
$lignes = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
$lignes = [];
}
// On calcule le nombre total de bâtiments possédés à partir du game_state (stocké en JSON) :
// une info que le classement n'affichait pas jusqu'ici, et qui donne un vrai aperçu de
// l'avancée d'un joueur au-delà du seul score
$classement = array_map(function ($ligne) {
$totalBatiments = 0;
if (!empty($ligne['game_state'])) {
$etat = json_decode($ligne['game_state'], true);
if (is_array($etat) && !empty($etat['buildings']) && is_array($etat['buildings'])) {
foreach ($etat['buildings'] as $possedes) {
$totalBatiments += (int) $possedes;
}
}
}
return [
'id' => (int) $ligne['id'],
'username' => $ligne['username'],
'score' => (float) $ligne['score'],
'lifetime_score' => (float) $ligne['lifetime_score'],
'prestige_level' => (int) $ligne['prestige_level'],
'prestige_bonus' => (float) $ligne['prestige_bonus'],
'total_buildings' => $totalBatiments,
'last_played' => $ligne['last_played'],
'created_at' => $ligne['created_at'],
];
}, $lignes);
echo json_encode($classement);