diff --git a/src/arenas/tictactoe/act.php b/src/arenas/tictactoe/act.php index 8517b3b..caf0d9d 100644 --- a/src/arenas/tictactoe/act.php +++ b/src/arenas/tictactoe/act.php @@ -21,25 +21,60 @@ switch ($_POST['act']){ '2-0' => '','2-1' => '','2-2' => ''); $end=false; + + //send init message to bots + $game_id=get_unique_id(); + for($player = 0; $player < 2; $player ++;){ + $params[$player]=array( + 'game-id' => $game_id, + 'action' => 'init', + 'game' => 'tictactoe', + 'players' => 2, + 'board' => '', + 'player-index' => $player + ); + } + get_IA_Response($bots[$bot1]['url'],$params[0]); //don't care about result + get_IA_Response($bots[$bot2]['url'],$params[1]); //don't care about result + + //"game-id":"gameid","action":"init","game":"tictactoe","players":2,"board":null,"you":null,"player-index":0} + //[0000] body> {"name":"moul-tictactoe","play":null,"error":null} + $playerPlayingNow=1; + while($end==false){ switch($playerPlayingNow){ case 1: $playerURL=$bots[$bot1]['url']; $playerCHAR='X'; $playerName=$bots[$bot1]['name']; + $playerIndex=0; break; case 2: $playerURL=$bots[$bot2]['url']; $playerCHAR='O'; $playerName=$bots[$bot2]['name']; + $playerIndex=1; break; default: error(500,"oups"); die; } - $playerResponse=get_IA_Response($playerCHAR,$playerURL,$map); + + $paramsToSend=array( + 'game-id' => $game_id, + 'action' => 'play-turn', + 'game' => 'tictactoe', + 'players' => 2, + 'board' => $map, + 'you' => $playerCHAR, + 'player-index' =>$playerIndex + ); + + $httpResponse=json_decode(get_IA_Response($playerURL,$paramsToSend)); + $playerResponse=$httpResponse['play']; + //tester la validité de la réponse if((isset($map[$playerResponse])) && ($map[$playerResponse]=="")){ //reponse conforme diff --git a/src/arenas/tictactoe/functions.php b/src/arenas/tictactoe/functions.php index db1936f..e204453 100644 --- a/src/arenas/tictactoe/functions.php +++ b/src/arenas/tictactoe/functions.php @@ -16,6 +16,9 @@ function get_Post_Params($botsCount){ return array('bot1' => $_POST['bot1'],'bot2' => $_POST['bot2']); } + + + /* function get_Bots_Array(){ //Recupérer la liste des Bots @@ -31,20 +34,31 @@ function get_Bots_Array(){ return $bots; } */ -function get_IA_Response($youChar,$iaBaseUrl,$grille){ - /*transforme la grille en parametres http GET - * et fait la requete vers $iaBaseUrl - * Retourne la réponse de l'IA - */ - $paramsGrille=""; - foreach($grille as $key => $case){ - $paramsGrille.="&".$key."=".$case; - } - $url=$iaBaseUrl."?you=".$youChar.$paramsGrille; +function get_IA_Response($iaUrl,$postParams){ + //send params JSON as body + + $data_string = json_encode($postParams); + /* $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_URL, $iaUrl); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $postParams); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); + + */ + + $ch = curl_init($iaUrl); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, array( + 'Content-Type: application/json', + 'Content-Length: ' . strlen($data_string)) + ); + $output= curl_exec($ch); + curl_close($ch); + return htmlentities($output); } \ No newline at end of file