<?php
	session_start();
	include('database.php');
	include('ELO_code.php');
	
	DB_connexion(); 

/*
// 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
*/

 
//************** FONCTIONS ****************//
 
// Calcul de la probabilité de gagner du joueur P1
function estimation($elo_1, $elo_2)
{
	$exp = ($elo_2 - $elo_1) / 400;
	return 1/ (1 + pow(10,$exp));
}
 
// Calcul de la nouvelle cote de P1
function calcul_elo($elo_1, $elo_2, $score)
{
	$k = valeur_k($elo_1);
	$estimation = estimation($elo_1, $elo_2);
	$nouveau_rang = $elo_1 + $k * ($score - $estimation);
 
	// On ne veut personne en dessous d'une cote elo de 300
	if ($nouveau_rang < 300)
	{
		$nouveau_rang = 300;
	}
 
	return array($nouveau_rang, $estimation);
}
 
// Calcule la valeur de K en fonction de la cote du joueur
function valeur_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;
}
 
 
function nouveau_rangs($elo_1, $elo_2, $score)
{
	// Score pour J2 VS J1
	$score_2 = 1 - $score;
 
	$calcul_J1 = calcul_elo($elo_1, $elo_2, $score);
	$estimation_J1 = $calcul_J1[1];
	$elo_J1 = round($calcul_J1[0]);
 
	$calcul_J2 = calcul_elo($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 phrase_score($score)
{
	if($score == 1)
	{
		return 'J1 gagne';
	}
 
	if ($score == 0)
	{
		return 'J2 gagne';
	}
 
	if ($score == 0.5)
	{
	return 'Match nul';
	}
}

/***************************************************************************************/ 
// Traitement des résultats

function traitement($tag_affiche, $elo1, $elo2, $score)
{
	$retour = nouveau_rangs($elo1, $elo2, $score);
	$elo_J1 = $retour[0];
	$elo_J2 = $retour[1];
	$estimation_J1 = $retour[2];
	$estimation_J2 = $retour[3];
 
	$difference_J1 = afficher_difference($elo_J1 - $elo1);
	$difference_J2 = afficher_difference($elo_J2 - $elo2);
 
	if($tag_affiche == true)
	{// Affichage + statistiques
		echo ' J1 : Probabilité de gagner : '  .convertir_pourcentage($estimation_J1);
		echo '<br/>';
		echo ' J2 : Probabilité de gagner : '  .convertir_pourcentage($estimation_J2);
		echo '<br/>';
	}
	
/*	echo '
	<h3>Si '.phrase_score($score).'</h3>
	J1 : '.$elo_J1.' (variation : '.$difference_J1.'). Probabilité de gagner : '.convertir_pourcentage($estimation_J1).'.<br>
	J2 : '.$elo_J2.' (variation : '.$difference_J2.'). Probabilité de gagner : '.convertir_pourcentage($estimation_J2).'.
	';*/
	
	echo '
			<h3>Si '.phrase_score($score).'</h3>
			J1 : '.$elo_J1.' (variation : '.$difference_J1.')'.'<br>
			J2 : '.$elo_J2.' (variation : '.$difference_J2.')'.'<br>
		';
}	
	
// cote initiale de J1
//$elo1 = 2300;
// cote initiale de J2
//$elo2 = 1700;
/*
// Score du match J1 contre J2
// 1 : P1 gagne
// 0 : P1 perd
// 0.5 : match nul
*/


						
			if(isset($_POST["J1"]) && isset($_POST["J2"]) )
			{
				$J1_nom =  $_POST["J1"]; 
				$J2_nom =  $_POST["J2"];	
				//$_SESSION['$J1_nom'] = $J1_nom;
				//$_SESSION['$J2_nom'] = $J2_nom;  
	
			}
				
			$sql = "SELECT * FROM classement WHERE joueur = '".$J1_nom."' ";
			$results = mysql_query($sql);
			$val = mysql_fetch_array($results);
			$elo1 =  $val['elo'];
			
			$sql = "SELECT * FROM classement WHERE joueur = '".$J2_nom."' ";
			$results = mysql_query($sql);
			$val = mysql_fetch_array($results);
			$elo2 =  $val['elo'];
			
			$_SESSION['$J1_nom'] = $J1_nom;
			$_SESSION['$J2_nom'] = $J2_nom;  
	
			
			echo '
					<h3>cote initiale</h3>
					Blanc : '.$elo1.'<br>
					Noir : '.$elo2.'<br>
				 ';

			// cote initiale de J1
			//$elo1 = 1800;
			// cote initiale de J2
			//$elo2 = 1000;	 


			//pourcentage
			$chance_of_winning = abs((1 / ( 1 + pow(10, ( ($elo2 - $elo1) / 400) ) )) * 100); 
			$chance_of_losing = abs(100 - $chance_of_winning);

			echo "<br/>";
			echo "----------------------------------------------------------";
			echo "<br/>";
			
			echo ' Blanc (J1) : Probabilité de gagner : '  .round($chance_of_winning , 2).' %';
			echo '<br/>';
			echo ' Noir (J2) : Probabilité de gagner : '  .round($chance_of_losing , 2).' %';
			echo '<br/>';
			

			echo "----------------------------------------------------------";
			echo "<br/>";
			$donnees[0] = $J1_nom;
			$donnees[1] = $J2_nom;
			$donnees[2] = 1;
			$donnees[3] = 0;
			
			switch ($_SESSION['algorithme'])
			{
				case "un":
					$retour = estimation_elo_un($donnees);
					break;
				case "deux":
					$retour = estimation_elo_deux($donnees);
					break;
				default:
					echo "erreur dans le traitement";
			}
			
			//echo $retour;
			//echo '<br/>';
			$pieces = explode("+", $retour);
			$diff = $pieces[0] - $pieces[1];
			echo "Blanc (J1) :  gagne ,  passe de " .$pieces[1]  ." à " .$pieces[0]   .' ('.$diff .')';
			echo '<br/>';
			$diff = $pieces[2] - $pieces[3];
			echo ' Noir (J2) : perd , passe de '  .$pieces[3] ." à " .$pieces[2]  .' ('.$diff .')';
			echo '<br/>';
			
			echo "----------------------------------------------------------";
			echo "<br/>";
		
			$donnees[0] = $J1_nom;
			$donnees[1] = $J2_nom;
			$donnees[2] = 0;
			$donnees[3] = 1;
			
			switch ($_SESSION['algorithme'])
			{
				case "un":
					$retour = estimation_elo_un($donnees);
					break;
				case "deux":
					$retour = estimation_elo_deux($donnees);
					break;
				default:
					echo "erreur dans le traitement";
			}
			
			//echo $retour;
			//echo '<br/>';
			$pieces = explode("+", $retour);
			$diff = $pieces[0] - $pieces[1];
			echo "Blanc (J1) :  perd ,  passe de " .$pieces[1]  ." à " .$pieces[0]   .' ('.$diff .')';
			echo '<br/>';
			$diff = $pieces[2] - $pieces[3];
			echo ' Noir (J2) : gagne , passe de '  .$pieces[3] ." à " .$pieces[2]  .' ('.$diff .')';
			echo '<br/>';
		
			echo "----------------------------------------------------------";
			echo "<br/>";
		
			$donnees[0] = $J1_nom;
			$donnees[1] = $J2_nom;
			$donnees[2] = 0.5;
			$donnees[3] = 0.5;
			
			switch ($_SESSION['algorithme'])
			{
				case "un":
					$retour = estimation_elo_un($donnees);
					break;
				case "deux":
					$retour = estimation_elo_deux($donnees);
					break;
				default:
					echo "erreur dans le traitement";
			}
			
			//echo $retour;
			//echo '<br/>';
			$pieces = explode("+", $retour);
			$diff = $pieces[0] - $pieces[1];
			echo "Blanc (J1) :  nul ,  passe de " .$pieces[1]  ." à " .$pieces[0]   .' ('.$diff .')';
			echo '<br/>';
			$diff = $pieces[2] - $pieces[3];
			echo ' Noir (J2) : nul , passe de '  .$pieces[3] ." à " .$pieces[2]  .' ('.$diff .')';
			echo '<br/>';
		
			echo "----------------------------------------------------------";
			echo "<br/>";
			echo "<br/>";
			
/*
			$score = 1;
			traitement(true, $elo1, $elo2, $score);	
			echo "<br/>";
			echo "----------------------------------------------------------";
			echo "<br/>";

			$score = 0;
			traitement(false, $elo1, $elo2, $score);	
			echo "<br/>";
			echo "----------------------------------------------------------";
			echo "<br/>";

			$score = 0.5;
			traitement(false, $elo1, $elo2, $score);		*/
?>	