www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 273040611b1557f065179de8043fed661ae48d41
parent b274f3ec760a743b5030081708e234ffb413b642
Author: Yoann Bonavero <yoann.b87@voila.fr>
Date:   Tue,  8 Mar 2011 08:40:44 +0100

Reprise de la documentation du code de "pticlic.php".

Diffstat:
Mcode/serveur/php/pticlic.php | 68+++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 51 insertions(+), 17 deletions(-)

diff --git a/code/serveur/php/pticlic.php b/code/serveur/php/pticlic.php @@ -2,6 +2,11 @@ require_once("db.php"); +/** Vérifie la validité du couple nom d'utilisateur / mot de passe. +* @param user : Le nom d'utilisateur. +* @param passwd : Le mot de passe. +* @return boolean : true si OK sinon false. +*/ function checkLogin($user, $passwd) { $db = getDB(); $hashPasswd = md5($passwd); @@ -9,7 +14,8 @@ function checkLogin($user, $passwd) { return $loginIsOk; } -/** Selectionne aléatoirement un noeud. +/** Selectionne aléatoirement l'eid d'un mot central. +* @return eid : Identifiant d'un mot central, NULL en cas d'erreur. */ function randomCenterNode() { @@ -17,15 +23,15 @@ function randomCenterNode() return $db->querySingle("select eid from random_center_node where rowid = (abs(random()) % (select max(rowid) from random_center_node))+1;"); } +/** Selectionne aléatoirement un noeud d'un nuage. +* @return eid : L'identifiant du noeud. +*/ function randomCloudNode() { $db = getDB(); return $db->querySingle("select eid from random_cloud_node where rowid = (abs(random()) % (select max(rowid) from random_cloud_node))+1;"); } - -// TODO : Yoann : peut-être faire une classe GameCreator avec les fonctions ci-dessous comme méthodes ? - /** * @param cloudSize : Taille du nuage. * @param centerEid : Identifiant du mot central. @@ -102,7 +108,7 @@ function cgBuildResultSets($cloudSize, $centerEid, $r1, $r2) } -/** +/** Sélectionne aléatoirement deux relations. * @return array : Tableau avec la relation 1 et la relation 2. */ function cgChooseRelations() @@ -120,7 +126,7 @@ function cgChooseRelations() return array($r1, $r2); } -/** +/** Génération d'un nuage pour un mot central. * @param cloudSize : Taille du nuage. * @param sources Les sources. * @param sumWeights La somme des poids. @@ -203,7 +209,7 @@ function cgBuildCloud($centerEid, $cloudSize, $sources, $sumWeights) } -/** +/** Insère la partie dans la base de données. * @param centerEid : Identifiant du mot central. * @param cloud : Le nuage. * @param r1 : Le type de la relation 1. @@ -264,26 +270,35 @@ function randomGameCore() { return $db->querySingle("select gid from game where gid = (abs(random()) % (select max(gid) from game))+1 or gid = (select max(gid) from game where gid > 0) order by gid limit 1;"); } +/** Sélection aléatoire d'une partie de la base de données parmis les parties à jouer. +* @return gid : Identifiant de la partie selectionnée. +*/ function randomGame() { $gid = randomGameCore(); + if ($gid === null) { // TODO : séparer ces créations de parties dans une fonction qui détecte le mode toussa. - for ($i = 0; $i < 100; $i++) { + for ($i = 0; $i < 100; $i++) createGameCore(10); - } + $gid = randomGameCore(); - if ($gid === null) { + + if ($gid === null) throw new Exception("Erreur lors de la récupération de la partie. Vérifiez qu'il y a au moins une partie.", 6); - } } return $gid; } +/** Formatage des mots lorsqu'il y a des généralisations/spécifications par le symbole ">". +* @param word : Le mot que l'on veut reformater. +* @return word : le mot formaté. +*/ function formatWord($word) { $db = getDB(); $res = ""; $stack = array(); + while (($pos = strpos($word, ">")) !== false) { $res .= substr($word,0,$pos) . " ("; $eid = intval(substr($word,$pos+1)); @@ -293,14 +308,17 @@ function formatWord($word) { $stack[] = $eid; $word = $db->querySingle("select name from node where eid = $eid"); } + $res .= $word; - for ($depth = count($stack); $depth > 0; $depth--) { + + for ($depth = count($stack); $depth > 0; $depth--) $res .= ')'; - } + return $res; } /** Formate une partie en JSON en l'imprimant. +* @param user : l'utilisateur. * @param gameId : L'identifiant d'une partie. */ function game2json($user, $gameId) @@ -383,7 +401,9 @@ function game2array($user, $gameId) } -/** Création d'une partie. +/** Création d'un lot de parties suivant un mode donnée. +* @param nbParties : le nombre de parties à créer. +* @param mode : Le mode de jeu pour les parties à créer. */ function createGame($nbParties, $mode) { @@ -408,6 +428,9 @@ function createGameCore($cloudSize) } /** Récupération d'une partie. +* @param user : L'identifiant de l'utilisateur. +* @param nbGames : Le nombre de parties à récupérer. +* @param mode : Le mode de jeu des parties à récupérer. */ function getGame($user, $nbGames, $mode) { @@ -424,6 +447,7 @@ function getGame($user, $nbGames, $mode) echo "]"; } + function computeScore($probas, $difficulty, $answer, $userReputation) { // Calcul du score. Score = proba[réponse de l'utilisateur]*coeff1 - proba[autres reponses]*coeff2 + bonus // score = - proba[autres reponses]*coeff2 @@ -448,15 +472,26 @@ function computeScore($probas, $difficulty, $answer, $userReputation) { return round($score * 100) / 100; } +/** Calcul de la réputation de l'utilisateur selon son score. +* @param score : Le score du joueur. +*/ function computeUserReputation($score) { return max(round(log($score)*100)/100, 0); } +/** Formatage des probalitées dans un tableau. +* @param row : le vecteur de probabilités. +* @return array : Le vecteur de probabilités normalisé. +*/ function normalizeProbas($row) { return array($row['probaR1']/$row['totalWeight'], $row['probaR2']/$row['totalWeight'], $row['probaR0']/$row['totalWeight'], $row['probaTrash']/$row['totalWeight']); } -/** Insertion des données d'une partie. +/** Insertion des données d'une partie joué par un utilisateur. +* @param user : L'identifiant de l'utilisateur ayant joué à la partie. +* @param pgid : L'identifiant de la partie jouée. +* @param gid : L'identifiant du jeu auquel la partie appartient. +* @return score : Le score réalisé par le joueur. */ function setGame($user, $pgid, $gid, $answers) { @@ -511,4 +546,4 @@ function setGame($user, $pgid, $gid, $answers) return $scores; } -?> -\ No newline at end of file +?>