<?php /****************************************************************************/ // Calcul de la probabilité de gagner du joueur J1 function estimation($elo_1, $elo_2) { $exp = ($elo_2 - $elo_1) / 400; return (1/ (1 + pow(10,$exp))); } /****************************************************************************/ // Calcul de la nouvelle cote du joueur J1 function calcul_elo_J1($elo_1, $elo_2, $score) { $k = facteur_k($elo_1); $estimation = estimation($elo_1, $elo_2); $nouveau_rang = $elo_1 + $k * ($score - $estimation); // si la cote devient trop petite < 300, on la clamp à cette valeur if ($nouveau_rang < 300) { $nouveau_rang = 300; } return array($nouveau_rang, $estimation); } /****************************************************************************/ // valeur de K en fonction de la cote du joueur function facteur_k($elo) { if($elo < 1000) { $k = 80; } if($elo >= 1000 AND $elo < 2000) { $k = 50; } if ($elo >= 2000 AND $elo <= 2400) { $k = 30; } if ($elo > 2400) { $k = 20; } return $k; } /****************************************************************************/ /* // Calcul des nouvelles cotes de P1 et P2 // score = 1 si P1 gagne // score = 0 si P1 perd // score = 0.5 s'il y a match nul */ function nouveau_rangs($elo_1, $elo_2, $score) { // Score pour P2 VS P1 $score_2 = 1 - $score; $calcul_J1 = calcul_elo_J1($elo_1, $elo_2, $score); $estimation_J1 = $calcul_J1[1]; $elo_J1 = round($calcul_J1[0]); $calcul_J2 = calcul_elo_J1($elo_2, $elo_1, $score_2); $estimation_J2 = $calcul_J2[1]; $elo_J2 = round($calcul_J2[0]); return array($elo_J1, $elo_J2, $estimation_J1, $estimation_J2); } /****************************************************************************/ function afficher_difference($nb) { if ($nb >= 0) { $nb = '+'.$nb; } return $nb; } /****************************************************************************/ function convertir_pourcentage($nb) { return round($nb * 100, 2).' %'; } /****************************************************************************/ function resultat_partie($score) { if($score == 1) { return 'J1 gagne'; } if($score == 0) { return 'J2 gagne'; } if ($score == 0.5) { return 'Match nul'; } } /****************************************************************************/ ?>