more logs on tictactoe
This commit is contained in:
parent
8eae918d36
commit
3f79c6bf6b
|
@ -4,333 +4,333 @@ require_once(__DIR__."/functions.php");
|
|||
$bots=get_Bots_Array('connectFou');
|
||||
$new=false;
|
||||
switch ($_POST['act']){
|
||||
|
||||
case "newFight":
|
||||
$new=true;
|
||||
//remove $_SESSION less xd_check
|
||||
$xd=$_SESSION['xd_check'];
|
||||
session_unset();
|
||||
$_SESSION['xd_check']=$xd;
|
||||
|
||||
|
||||
//init map
|
||||
$_SESSION['map']=array(
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
);
|
||||
|
||||
//check if bots exists
|
||||
$bot1Exists = false;
|
||||
$bot2Exists = false;
|
||||
foreach($bots as $bot){
|
||||
if($bot['id'] == $_POST['bot1']){
|
||||
$bot1 = $bot;
|
||||
$_SESSION['bot1']=$bot;
|
||||
$bot1Exists =true;
|
||||
}
|
||||
if($bot['id'] == $_POST['bot2']){
|
||||
$bot2 = $bot;
|
||||
$_SESSION['bot2']=$bot;
|
||||
$bot2Exists =true;
|
||||
}
|
||||
if ($bot1Exists && $bot2Exists){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((!$bot1Exists) OR (!$bot2Exists)){
|
||||
error (500,"missing parameter 2");
|
||||
}
|
||||
|
||||
//get a match id
|
||||
$_SESSION['matchId']=get_unique_id();
|
||||
$_SESSION['game']="connectFou";
|
||||
|
||||
//send init message
|
||||
|
||||
for($player = 0; $player < 2; $player++){
|
||||
$params[$player]=array(
|
||||
'game-id' => $_SESSION['matchId'],
|
||||
'action' => 'init',
|
||||
'game' => 'connectfour',
|
||||
'players' => 2,
|
||||
'board' => '',
|
||||
'player-index' => $player
|
||||
);
|
||||
}
|
||||
/*
|
||||
'messageSend' => $data_string,
|
||||
'httpStatus' => $curl_getinfo($ch)['http_code'],
|
||||
'response' => $output,
|
||||
'responseArr' => $arr
|
||||
*/
|
||||
get_IA_Response($_SESSION['bot1']['url'],$params[0]); //don't care about result
|
||||
get_IA_Response($_SESSION['bot2']['url'],$params[1]); //don't care about result
|
||||
|
||||
|
||||
case "fight":
|
||||
|
||||
if($_SESSION['game'] <> "connectFou"){
|
||||
error(500,"game non found");
|
||||
die;
|
||||
}
|
||||
if((!$new) && ($_POST['gameId'] <> $_SESSION['matchId'])){
|
||||
error (512, "not correct gameId");
|
||||
}
|
||||
|
||||
//What player has to play?
|
||||
if(!isset($_SESSION['currentPlayer'])){
|
||||
$_SESSION['currentPlayer']=1;
|
||||
$you="X";
|
||||
$currentBotName=$_SESSION['bot1']['name'];
|
||||
$opponentName=$_SESSION['bot2']['name'];
|
||||
$botUrl=$_SESSION['bot1']['url'];
|
||||
}else{
|
||||
if($_SESSION['currentPlayer']==1){
|
||||
$_SESSION['currentPlayer']=2;
|
||||
$you="O";
|
||||
$opponentName=$_SESSION['bot1']['name'];
|
||||
$currentBotName=$_SESSION['bot2']['name'];
|
||||
$botUrl=$_SESSION['bot2']['url'];
|
||||
}else{
|
||||
$_SESSION['currentPlayer']=1;
|
||||
$opponentName=$_SESSION['bot2']['name'];
|
||||
$currentBotName=$_SESSION['bot1']['name'];
|
||||
$botUrl=$_SESSION['bot1']['url'];
|
||||
$you="X";
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
||||
|
||||
game-id string identifiant la partie.
|
||||
action string identifiant la phase, init tout de suite, sera play-turn dans le châpitre suivant.
|
||||
game string identifiant le jeu. Ici, ce sera forcément tictactoe. ça peut servir si vous donnez une seule URL pour plusieurs bots.
|
||||
players Int indiquant le nombre de joueurs dans la partie, toujours 2 au morpion.
|
||||
board Vide à cette étape, voir chapitre suivant.
|
||||
player-index int, L'ordre de votre bot dans les tours de jeu. Le premier joueur a la valeur 0, le deuxième 1.
|
||||
*/
|
||||
//make post datas to send
|
||||
$postDatas=array(
|
||||
'game-id' => "".$_SESSION['matchId'],
|
||||
'action' => 'play-turn',
|
||||
'game' => 'connectfour',
|
||||
'players' => 2,
|
||||
'opponent' => $opponentName,
|
||||
'you' => $you,
|
||||
'board' => $_SESSION['map'],
|
||||
'player-index' => $_SESSION['currentPlayer'] - 1
|
||||
);
|
||||
|
||||
//send query
|
||||
$tempPlayer = get_IA_Response($botUrl,$postDatas);
|
||||
if(isset($tempPlayer['responseArr']['play'])){
|
||||
$anwserPlayer = $tempPlayer['responseArr']['play'];
|
||||
}else{
|
||||
$anwserPlayer = -1;
|
||||
}
|
||||
|
||||
//vérifier la validité de la réponse
|
||||
if((isset($_SESSION['map'][5][$anwserPlayer])) && ($_SESSION['map'][5][$anwserPlayer] == "")){
|
||||
//reponse conforme
|
||||
|
||||
for($y = 0; $_SESSION['map'][$y][$anwserPlayer] <> ""; $y++){
|
||||
}
|
||||
|
||||
$_SESSION['map'][$y][$anwserPlayer]=$you;
|
||||
$strikeX=$anwserPlayer;
|
||||
$strikeY=$y;
|
||||
|
||||
//does he win?
|
||||
$wins=false;
|
||||
|
||||
//diagonale \
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
$cellsWin=array();
|
||||
$cellsWin[]=array($x,$y);
|
||||
while(($x > 0) && ($y < 5) && ($_SESSION['map'][$y + 1][$x - 1] == $you)){
|
||||
$x--;
|
||||
$y++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
|
||||
case "newFight":
|
||||
$new=true;
|
||||
//remove $_SESSION less xd_check
|
||||
$xd=$_SESSION['xd_check'];
|
||||
session_unset();
|
||||
$_SESSION['xd_check']=$xd;
|
||||
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
while(($x < 6) && ($y > 0) && ($_SESSION['map'][$y - 1][$x + 1] == $you)){
|
||||
$x++;
|
||||
$y--;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
}
|
||||
|
||||
//diagonale /
|
||||
if(!$wins){
|
||||
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
$cellsWin =array();
|
||||
$cellsWin[]=array($x ,$y);
|
||||
while(($x < 6) && ($y < 5) && ($_SESSION['map'][$y + 1][$x + 1 ] == $you)){
|
||||
$x++;
|
||||
$y++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
|
||||
//init map
|
||||
$_SESSION['map']=array(
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
array("","","","","","",""),
|
||||
);
|
||||
|
||||
//check if bots exists
|
||||
$bot1Exists = false;
|
||||
$bot2Exists = false;
|
||||
foreach($bots as $bot){
|
||||
if($bot['id'] == $_POST['bot1']){
|
||||
$bot1 = $bot;
|
||||
$_SESSION['bot1']=$bot;
|
||||
$bot1Exists =true;
|
||||
}
|
||||
if($bot['id'] == $_POST['bot2']){
|
||||
$bot2 = $bot;
|
||||
$_SESSION['bot2']=$bot;
|
||||
$bot2Exists =true;
|
||||
}
|
||||
if ($bot1Exists && $bot2Exists){
|
||||
break;
|
||||
}
|
||||
}
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
while(($x > 0) && ($y > 0) && ($_SESSION['map'][$y - 1][$x - 1 ] == $you)){
|
||||
$x--;
|
||||
$y--;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
if ((!$bot1Exists) OR (!$bot2Exists)){
|
||||
error (500,"missing parameter 2");
|
||||
}
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
|
||||
//get a match id
|
||||
$_SESSION['matchId']=get_unique_id();
|
||||
$_SESSION['game']="connectFou";
|
||||
|
||||
//send init message
|
||||
|
||||
for($player = 0; $player < 2; $player++){
|
||||
$params[$player]=array(
|
||||
'game-id' => $_SESSION['matchId'],
|
||||
'action' => 'init',
|
||||
'game' => 'connectfour',
|
||||
'players' => 2,
|
||||
'board' => '',
|
||||
'player-index' => $player
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//horizontale
|
||||
if(!$wins){
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
$cellsWin =array();
|
||||
$cellsWin[]=array($x ,$y);
|
||||
while(($x < 6) && ($_SESSION['map'][$y][$x + 1 ] == $you)){
|
||||
$x++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
/*
|
||||
* 'messageSend' => $data_string,
|
||||
* 'httpStatus' => $curl_getinfo($ch)['http_code'],
|
||||
* 'response' => $output,
|
||||
* 'responseArr' => $arr
|
||||
*/
|
||||
get_IA_Response($_SESSION['bot1']['url'],$params[0]); //don't care about result
|
||||
get_IA_Response($_SESSION['bot2']['url'],$params[1]); //don't care about result
|
||||
|
||||
|
||||
case "fight":
|
||||
|
||||
}
|
||||
$x=$strikeX;
|
||||
while(($x >0) && ($_SESSION['map'][$y][$x - 1 ] == $you)){
|
||||
$count++;
|
||||
$x--;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
}
|
||||
}
|
||||
|
||||
//verticale
|
||||
if(!$wins){
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
|
||||
$cellsWin =array();
|
||||
$cellsWin[]=array($x ,$y);
|
||||
|
||||
while(($y < 5) && ($_SESSION['map'][$y + 1 ][$x] == $you)){
|
||||
$y++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
|
||||
$y=$strikeY;
|
||||
while(($y >0) && ($_SESSION['map'][$y - 1][$x] == $you)){
|
||||
$count++;
|
||||
$y--;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($wins){
|
||||
$anwserToJS=array(
|
||||
'continue' => 0,
|
||||
'strikeX' => $strikeX,
|
||||
'strikeY' => $strikeY,
|
||||
'strikeSymbol'=> $you,
|
||||
'log' => $you." ".$currentBotName." joue colonne ". $anwserPlayer." et a gagné",
|
||||
'cellsWin' => json_encode($cellsWin),
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
if($_SESSION['currentPlayer']==1){
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],1);
|
||||
}else{
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],2);
|
||||
}
|
||||
|
||||
}else{
|
||||
|
||||
//Was it the last cell?
|
||||
|
||||
$full=true;
|
||||
foreach ($_SESSION['map'][5] as $cell) {
|
||||
if ($cell == ""){
|
||||
$full=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($full){
|
||||
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],0);
|
||||
$anwserToJS=array(
|
||||
'continue' => 0,
|
||||
'strikeX' => $strikeX,
|
||||
'strikeY' => $strikeY,
|
||||
'strikeSymbol'=> $you,
|
||||
'log' => $you." ".$currentBotName." joue colonne ". $anwserPlayer." match nul",
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
|
||||
}else{
|
||||
|
||||
$anwserToJS=array(
|
||||
'continue' => 1,
|
||||
'strikeX' => $strikeX,
|
||||
'strikeY' => $strikeY,
|
||||
'strikeSymbol'=> $you,
|
||||
'log' => $you." ".$currentBotName." joue colonne ". $anwserPlayer,
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
//reponse non conforme
|
||||
|
||||
$anwserToJS=array(
|
||||
'continue' =>0,
|
||||
'strikeX' => -1,
|
||||
'strikeY' => -1,
|
||||
'log' => $you." ".$currentBotName." made a non conform anwser: <br/>
|
||||
Bots Arena sent:<em>".$tempPlayer['messageSend']."</em><br/>
|
||||
".$currentBotName." HTTP STATUS:<em> ".$tempPlayer['httpStatus']."</em><br/>
|
||||
His response: <em>".htmlentities($tempPlayer['response'])."</em>",
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
if($_SESSION['currentPlayer']==1){
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],2);
|
||||
}else{
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],1);
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($anwserToJS);
|
||||
|
||||
|
||||
|
||||
die;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
if($_SESSION['game'] <> "connectFou"){
|
||||
error(500,"game non found");
|
||||
die;
|
||||
}
|
||||
if((!$new) && ($_POST['gameId'] <> $_SESSION['matchId'])){
|
||||
error (512, "not correct gameId");
|
||||
}
|
||||
|
||||
//What player has to play?
|
||||
if(!isset($_SESSION['currentPlayer'])){
|
||||
$_SESSION['currentPlayer']=1;
|
||||
$you="X";
|
||||
$currentBotName=$_SESSION['bot1']['name'];
|
||||
$opponentName=$_SESSION['bot2']['name'];
|
||||
$botUrl=$_SESSION['bot1']['url'];
|
||||
}else{
|
||||
if($_SESSION['currentPlayer']==1){
|
||||
$_SESSION['currentPlayer']=2;
|
||||
$you="O";
|
||||
$opponentName=$_SESSION['bot1']['name'];
|
||||
$currentBotName=$_SESSION['bot2']['name'];
|
||||
$botUrl=$_SESSION['bot2']['url'];
|
||||
}else{
|
||||
$_SESSION['currentPlayer']=1;
|
||||
$opponentName=$_SESSION['bot2']['name'];
|
||||
$currentBotName=$_SESSION['bot1']['name'];
|
||||
$botUrl=$_SESSION['bot1']['url'];
|
||||
$you="X";
|
||||
}
|
||||
}
|
||||
/*
|
||||
*
|
||||
*
|
||||
* game-id string identifiant la partie.
|
||||
* action string identifiant la phase, init tout de suite, sera play-turn dans le châpitre suivant.
|
||||
* game string identifiant le jeu. Ici, ce sera forcément tictactoe. ça peut servir si vous donnez une seule URL pour plusieurs bots.
|
||||
* players Int indiquant le nombre de joueurs dans la partie, toujours 2 au morpion.
|
||||
* board Vide à cette étape, voir chapitre suivant.
|
||||
* player-index int, L'ordre de votre bot dans les tours de jeu. Le premier joueur a la valeur 0, le deuxième 1.
|
||||
*/
|
||||
//make post datas to send
|
||||
$postDatas=array(
|
||||
'game-id' => "".$_SESSION['matchId'],
|
||||
'action' => 'play-turn',
|
||||
'game' => 'connectfour',
|
||||
'players' => 2,
|
||||
'opponent' => $opponentName,
|
||||
'you' => $you,
|
||||
'board' => $_SESSION['map'],
|
||||
'player-index' => $_SESSION['currentPlayer'] - 1
|
||||
);
|
||||
|
||||
//send query
|
||||
$tempPlayer = get_IA_Response($botUrl,$postDatas);
|
||||
if(isset($tempPlayer['responseArr']['play'])){
|
||||
$anwserPlayer = $tempPlayer['responseArr']['play'];
|
||||
}else{
|
||||
$anwserPlayer = -1;
|
||||
}
|
||||
|
||||
//vérifier la validité de la réponse
|
||||
if((isset($_SESSION['map'][5][$anwserPlayer])) && ($_SESSION['map'][5][$anwserPlayer] == "")){
|
||||
//reponse conforme
|
||||
|
||||
for($y = 0; $_SESSION['map'][$y][$anwserPlayer] <> ""; $y++){
|
||||
}
|
||||
|
||||
$_SESSION['map'][$y][$anwserPlayer]=$you;
|
||||
$strikeX=$anwserPlayer;
|
||||
$strikeY=$y;
|
||||
|
||||
//does he win?
|
||||
$wins=false;
|
||||
|
||||
//diagonale \
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
$cellsWin=array();
|
||||
$cellsWin[]=array($x,$y);
|
||||
while(($x > 0) && ($y < 5) && ($_SESSION['map'][$y + 1][$x - 1] == $you)){
|
||||
$x--;
|
||||
$y++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
while(($x < 6) && ($y > 0) && ($_SESSION['map'][$y - 1][$x + 1] == $you)){
|
||||
$x++;
|
||||
$y--;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
}
|
||||
|
||||
//diagonale /
|
||||
if(!$wins){
|
||||
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
$cellsWin =array();
|
||||
$cellsWin[]=array($x ,$y);
|
||||
while(($x < 6) && ($y < 5) && ($_SESSION['map'][$y + 1][$x + 1 ] == $you)){
|
||||
$x++;
|
||||
$y++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
while(($x > 0) && ($y > 0) && ($_SESSION['map'][$y - 1][$x - 1 ] == $you)){
|
||||
$x--;
|
||||
$y--;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//horizontale
|
||||
if(!$wins){
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
$cellsWin =array();
|
||||
$cellsWin[]=array($x ,$y);
|
||||
while(($x < 6) && ($_SESSION['map'][$y][$x + 1 ] == $you)){
|
||||
$x++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
|
||||
}
|
||||
$x=$strikeX;
|
||||
while(($x >0) && ($_SESSION['map'][$y][$x - 1 ] == $you)){
|
||||
$count++;
|
||||
$x--;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
}
|
||||
}
|
||||
|
||||
//verticale
|
||||
if(!$wins){
|
||||
$count=1;
|
||||
$x=$strikeX;
|
||||
$y=$strikeY;
|
||||
|
||||
$cellsWin =array();
|
||||
$cellsWin[]=array($x ,$y);
|
||||
|
||||
while(($y < 5) && ($_SESSION['map'][$y + 1 ][$x] == $you)){
|
||||
$y++;
|
||||
$count++;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
|
||||
$y=$strikeY;
|
||||
while(($y >0) && ($_SESSION['map'][$y - 1][$x] == $you)){
|
||||
$count++;
|
||||
$y--;
|
||||
$cellsWin[]=array($x,$y);
|
||||
}
|
||||
if($count>3){
|
||||
$wins=true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($wins){
|
||||
$anwserToJS=array(
|
||||
'continue' => 0,
|
||||
'strikeX' => $strikeX,
|
||||
'strikeY' => $strikeY,
|
||||
'strikeSymbol'=> $you,
|
||||
'log' => $you." ".$currentBotName." joue colonne ". $anwserPlayer." et a gagné",
|
||||
'cellsWin' => json_encode($cellsWin),
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
if($_SESSION['currentPlayer']==1){
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],1);
|
||||
}else{
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],2);
|
||||
}
|
||||
|
||||
}else{
|
||||
|
||||
//Was it the last cell?
|
||||
|
||||
$full=true;
|
||||
foreach ($_SESSION['map'][5] as $cell) {
|
||||
if ($cell == ""){
|
||||
$full=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($full){
|
||||
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],0);
|
||||
$anwserToJS=array(
|
||||
'continue' => 0,
|
||||
'strikeX' => $strikeX,
|
||||
'strikeY' => $strikeY,
|
||||
'strikeSymbol'=> $you,
|
||||
'log' => $you." ".$currentBotName." joue colonne ". $anwserPlayer." match nul",
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
|
||||
}else{
|
||||
|
||||
$anwserToJS=array(
|
||||
'continue' => 1,
|
||||
'strikeX' => $strikeX,
|
||||
'strikeY' => $strikeY,
|
||||
'strikeSymbol'=> $you,
|
||||
'log' => $you." ".$currentBotName." joue colonne ". $anwserPlayer,
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
//reponse non conforme
|
||||
|
||||
$anwserToJS=array(
|
||||
'continue' =>0,
|
||||
'strikeX' => -1,
|
||||
'strikeY' => -1,
|
||||
'log' => $you." ".$currentBotName." made a non conform anwser: <br/>
|
||||
Bots Arena sent:<em>".$tempPlayer['messageSend']."</em><br/>
|
||||
".$currentBotName." HTTP STATUS:<em> ".$tempPlayer['httpStatus']."</em><br/>
|
||||
His response: <em>".htmlentities($tempPlayer['response'])."</em>",
|
||||
'gameId' => $_SESSION['matchId']
|
||||
);
|
||||
if($_SESSION['currentPlayer']==1){
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],2);
|
||||
}else{
|
||||
save_battle('connectFou',$_SESSION['bot1']['name'],$_SESSION['bot2']['name'],1);
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($anwserToJS);
|
||||
|
||||
|
||||
|
||||
die;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
|
@ -2,29 +2,29 @@
|
|||
|
||||
require_once(__DIR__."/functions.php");
|
||||
switch ($_POST['act']){
|
||||
|
||||
case "fight":
|
||||
$bots=get_Bots_Array('tictactoe');
|
||||
//clean $_POST vars
|
||||
$postParams=get_Post_Params(count($bots));
|
||||
if(!$postParams){
|
||||
error(400,"wrong parameters send");
|
||||
die;
|
||||
}else{
|
||||
$bot1=$postParams['bot1'];
|
||||
$bot2=$postParams['bot2'];
|
||||
}
|
||||
//init map
|
||||
$map=array(
|
||||
'0-0' => '','0-1' => '','0-2' => '',
|
||||
'1-0' => '','1-1' => '','1-2' => '',
|
||||
'2-0' => '','2-1' => '','2-2' => '');
|
||||
|
||||
$end=false;
|
||||
|
||||
//send init message to bots
|
||||
$game_id = "".get_unique_id();
|
||||
for($player = 0; $player < 2; $player++){
|
||||
case "fight":
|
||||
$bots=get_Bots_Array('tictactoe');
|
||||
//clean $_POST vars
|
||||
$postParams=get_Post_Params(count($bots));
|
||||
if(!$postParams){
|
||||
error(400,"wrong parameters send");
|
||||
die;
|
||||
}else{
|
||||
$bot1=$postParams['bot1'];
|
||||
$bot2=$postParams['bot2'];
|
||||
}
|
||||
//init map
|
||||
$map=array(
|
||||
'0-0' => '','0-1' => '','0-2' => '',
|
||||
'1-0' => '','1-1' => '','1-2' => '',
|
||||
'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',
|
||||
|
@ -32,106 +32,117 @@ switch ($_POST['act']){
|
|||
'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
|
||||
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
$paramsToSend=array(
|
||||
'game-id' => $game_id,
|
||||
'action' => 'play-turn',
|
||||
'game' => 'tictactoe',
|
||||
'players' => 2,
|
||||
'board' => $map,
|
||||
'you' => $playerCHAR,
|
||||
'player-index' =>$playerIndex
|
||||
);
|
||||
|
||||
$playerResponse=get_IA_Response($playerURL,$paramsToSend)['play'];
|
||||
|
||||
//tester la validité de la réponse
|
||||
if((isset($map[$playerResponse])) && ($map[$playerResponse]=="")){
|
||||
//reponse conforme
|
||||
echo "<p>".$playerName." joue en ".$playerResponse." la nouvelle grille est <br/>";
|
||||
$map[$playerResponse]=$playerCHAR;
|
||||
echo "<table>";
|
||||
for($j=0;$j<3;$j++){
|
||||
echo "<tr>";
|
||||
for($i=0;$i<3;$i++){
|
||||
echo '<td class="cellj'.$j.' celli'.$i.'">'.$map[$j.'-'.$i].'</td>';
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
//tester si trois caracteres allignés
|
||||
if(
|
||||
(($map['0-0']==$map['0-1'])&&($map['0-1']==$map['0-2'])&&($map['0-2']!==""))
|
||||
OR (($map['1-0']==$map['1-1'])&&($map['1-1']==$map['1-2'])&&($map['1-2']!==""))
|
||||
OR (($map['2-0']==$map['2-1'])&&($map['2-1']==$map['2-2'])&&($map['2-2']!==""))
|
||||
OR (($map['0-0']==$map['1-0'])&&($map['1-0']==$map['2-0'])&&($map['2-0']!==""))
|
||||
OR (($map['0-1']==$map['1-1'])&&($map['1-1']==$map['2-1'])&&($map['2-1']!==""))
|
||||
OR (($map['0-2']==$map['1-2'])&&($map['1-2']==$map['2-2'])&&($map['2-2']!==""))
|
||||
OR (($map['0-0']==$map['1-1'])&&($map['1-1']==$map['2-2'])&&($map['2-2']!==""))
|
||||
OR (($map['0-2']==$map['1-1'])&&($map['1-1']==$map['2-0'])&&($map['2-0']!==""))
|
||||
){
|
||||
echo "<p>".$playerName." ".$playerCHAR." a gagné.</p>";
|
||||
save_battle('tictactoe',$bots[$bot1]['name'],$bots[$bot2]['name'],$playerPlayingNow);
|
||||
$end=true;
|
||||
break;
|
||||
}
|
||||
//tester si toutes les cases ne seraient pas prises
|
||||
$full=true;
|
||||
foreach($map as $char){
|
||||
if($char==""){
|
||||
$full=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if($full){
|
||||
echo "<p>Match nul</p>";
|
||||
save_battle('tictactoe',$bots[$bot1]['name'],$bots[$bot2]['name'],0);
|
||||
$end=true;
|
||||
break;
|
||||
}
|
||||
|
||||
//on change de joueur
|
||||
if($playerPlayingNow==1){
|
||||
$playerPlayingNow=2;
|
||||
}else{
|
||||
$playerPlayingNow=1;
|
||||
}
|
||||
}else{
|
||||
echo "<p>".$playerName." a fait une réponse non conforme. Il perd.</p>";
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
die;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
);
|
||||
}
|
||||
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
|
||||
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
$paramsToSend=array(
|
||||
'game-id' => $game_id,
|
||||
'action' => 'play-turn',
|
||||
'game' => 'tictactoe',
|
||||
'players' => 2,
|
||||
'board' => $map,
|
||||
'you' => $playerCHAR,
|
||||
'player-index' =>$playerIndex
|
||||
);
|
||||
|
||||
|
||||
$tempPlayer = get_IA_Response($botUrl,$paramsToSend);
|
||||
if(isset($tempPlayer['responseArr']['play'])){
|
||||
$playerResponse = $tempPlayer['responseArr']['play'];
|
||||
}else{
|
||||
$anwserPlayer = -1;
|
||||
}
|
||||
|
||||
//tester la validité de la réponse
|
||||
if((isset($map[$playerResponse])) && ($map[$playerResponse]=="")){
|
||||
//reponse conforme
|
||||
echo "<p>".$playerName." joue en ".$playerResponse." la nouvelle grille est <br/>";
|
||||
$map[$playerResponse]=$playerCHAR;
|
||||
echo "<table>";
|
||||
for($j=0;$j<3;$j++){
|
||||
echo "<tr>";
|
||||
for($i=0;$i<3;$i++){
|
||||
echo '<td class="cellj'.$j.' celli'.$i.'">'.$map[$j.'-'.$i].'</td>';
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
//tester si trois caracteres allignés
|
||||
if(
|
||||
(($map['0-0']==$map['0-1'])&&($map['0-1']==$map['0-2'])&&($map['0-2']!==""))
|
||||
OR (($map['1-0']==$map['1-1'])&&($map['1-1']==$map['1-2'])&&($map['1-2']!==""))
|
||||
OR (($map['2-0']==$map['2-1'])&&($map['2-1']==$map['2-2'])&&($map['2-2']!==""))
|
||||
OR (($map['0-0']==$map['1-0'])&&($map['1-0']==$map['2-0'])&&($map['2-0']!==""))
|
||||
OR (($map['0-1']==$map['1-1'])&&($map['1-1']==$map['2-1'])&&($map['2-1']!==""))
|
||||
OR (($map['0-2']==$map['1-2'])&&($map['1-2']==$map['2-2'])&&($map['2-2']!==""))
|
||||
OR (($map['0-0']==$map['1-1'])&&($map['1-1']==$map['2-2'])&&($map['2-2']!==""))
|
||||
OR (($map['0-2']==$map['1-1'])&&($map['1-1']==$map['2-0'])&&($map['2-0']!==""))
|
||||
){
|
||||
echo "<p>".$playerName." ".$playerCHAR." a gagné.</p>";
|
||||
save_battle('tictactoe',$bots[$bot1]['name'],$bots[$bot2]['name'],$playerPlayingNow);
|
||||
$end=true;
|
||||
break;
|
||||
}
|
||||
//tester si toutes les cases ne seraient pas prises
|
||||
$full=true;
|
||||
foreach($map as $char){
|
||||
if($char==""){
|
||||
$full=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if($full){
|
||||
echo "<p>Match nul</p>";
|
||||
save_battle('tictactoe',$bots[$bot1]['name'],$bots[$bot2]['name'],0);
|
||||
$end=true;
|
||||
break;
|
||||
}
|
||||
|
||||
//on change de joueur
|
||||
if($playerPlayingNow==1){
|
||||
$playerPlayingNow=2;
|
||||
}else{
|
||||
$playerPlayingNow=1;
|
||||
}
|
||||
}else{
|
||||
echo "<p>".$playerName." made a non conform anwser, he lost: <br/>
|
||||
Bots Arena sent:<em>".$tempPlayer['messageSend']."</em><br/>
|
||||
".$currentBotName." HTTP STATUS:<em> ".$tempPlayer['httpStatus']."</em><br/>
|
||||
His response: <em>".htmlentities($tempPlayer['response'])."</em></p>",
|
||||
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
die;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -6,4 +6,5 @@ td {min-width: 10px; height: 10px;}
|
|||
.arrenaMessage{color: green;}
|
||||
.arrenaMessage::before{content: "arena message:"; color: grey; font-size: 70%; test-transform:italic;}
|
||||
.botResponse{color: red;}
|
||||
.botResponse::before{content: "bot response:";color: grey; font-size: 70%; test-transform:italic;}
|
||||
.botResponse::before{content: "bot response:";color: grey; font-size: 70%; test-transform:italic;}
|
||||
#fightResult p em {color: grey; font-size: 70%; test-transform:italic;}
|
Loading…
Reference in New Issue
Block a user