2015-12-11 13:59:14 +01:00
|
|
|
<?php
|
2015-12-12 11:06:26 +01:00
|
|
|
require_once(__DIR__."/functions.php");
|
2015-12-11 17:22:43 +01:00
|
|
|
$bots=get_Bots_Array('Battleship');
|
2015-12-12 11:05:54 +01:00
|
|
|
|
2015-12-11 13:59:14 +01:00
|
|
|
switch ($_POST['act']){
|
|
|
|
case "initGame":
|
2015-12-11 17:22:43 +01:00
|
|
|
//verifier parametres POST
|
|
|
|
$postParamsWanted=array(
|
|
|
|
// key,min,max
|
|
|
|
array('gridWidth',1,100),
|
|
|
|
array('gridHeight',1,100),
|
2015-12-12 11:00:35 +01:00
|
|
|
array('nbShip1',0,10),
|
|
|
|
array('nbShip2',0,10),
|
|
|
|
array('nbShip3',0,10),
|
|
|
|
array('nbShip4',0,10),
|
|
|
|
array('nbShip5',0,10),
|
|
|
|
array('nbShip6',0,10)
|
2015-12-11 17:22:43 +01:00
|
|
|
);
|
|
|
|
|
|
|
|
foreach($postParamsWanted as $p){
|
|
|
|
if(!isset($_POST[$p[0]])){
|
2015-12-12 10:52:14 +01:00
|
|
|
error (500,'missing parameter 1');
|
2015-12-11 17:22:43 +01:00
|
|
|
die;
|
|
|
|
}else{
|
|
|
|
$value=$_POST[$p[0]];
|
|
|
|
}
|
|
|
|
if (
|
|
|
|
(!is_numeric($value))
|
2015-12-12 11:01:10 +01:00
|
|
|
OR ($value < $p[1])
|
|
|
|
OR ($value > $p[2])
|
2015-12-11 17:22:43 +01:00
|
|
|
)
|
|
|
|
{
|
2015-12-12 11:00:35 +01:00
|
|
|
error(500,'wrong parameters '.$p[0]);
|
2015-12-11 17:22:43 +01:00
|
|
|
die;
|
|
|
|
}
|
|
|
|
$postValues[$p[0]]=$value;
|
|
|
|
|
|
|
|
}
|
|
|
|
//check if bots exists
|
|
|
|
$bot1Exists = false;
|
|
|
|
$bot2Exists = false;
|
|
|
|
foreach($bots as $bot){
|
|
|
|
if($bot['id'] == $_POST['bot1']){
|
2015-12-12 10:50:44 +01:00
|
|
|
|
2015-12-11 17:22:43 +01:00
|
|
|
$bot1 = $bot;
|
|
|
|
$bot1Exists =true;
|
|
|
|
}
|
|
|
|
if($bot['id'] == $_POST['bot2']){
|
|
|
|
$bot2 = $bot;
|
|
|
|
$bot2Exists =true;
|
|
|
|
}
|
|
|
|
if ($bot1Exists && $bot2Exists){
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((!$bot1Exists) OR (!$bot2Exists)){
|
2015-12-12 10:52:14 +01:00
|
|
|
error (500,"missing parameter 2");
|
2015-12-11 17:22:43 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
//vars checked, lets init the initGame
|
|
|
|
|
|
|
|
$_SESSION['matchId']=get_unique_id();
|
2015-12-12 10:25:40 +01:00
|
|
|
|
|
|
|
|
2015-12-14 22:30:10 +01:00
|
|
|
for($player = 1; $player <= 2; $player++){
|
2015-12-12 10:25:40 +01:00
|
|
|
|
2015-12-14 22:30:10 +01:00
|
|
|
if($player==1){
|
|
|
|
$opponentName=$bot2['name'];
|
|
|
|
$currentBot=$bot1;
|
|
|
|
}else{
|
|
|
|
$opponentName=$bot1['name'];
|
|
|
|
$currentBot=$bot2;
|
|
|
|
}
|
|
|
|
|
|
|
|
$botParamsToSend=array(
|
|
|
|
'game' => 'Battleship',
|
|
|
|
'match_id' => $_SESSION['matchId']."-1",
|
|
|
|
'act' => 'init',
|
|
|
|
'opponent' => $opponentName,
|
|
|
|
'width' => $postValues['gridWidth'],
|
|
|
|
'height' => $postValues['gridHeight'],
|
|
|
|
'ship1' => $postValues['nbShip1'],
|
|
|
|
'ship2' => $postValues['nbShip2'],
|
|
|
|
'ship3' => $postValues['nbShip3'],
|
|
|
|
'ship4' => $postValues['nbShip4'],
|
|
|
|
'ship5' => $postValues['nbShip5'],
|
|
|
|
'ship6' => $postValues['nbShip6']
|
|
|
|
|
|
|
|
);
|
|
|
|
$anwserPlayer=get_IA_Response($currentBot['url'],$botParamsToSend);
|
|
|
|
$boatsPlayer = json_decode( html_entity_decode($anwserPlayer));
|
|
|
|
if(!$boatsPlayer){
|
|
|
|
echo $currentBot['name']." a fait une réponse non conforme, il perd.";
|
|
|
|
if($player==1){
|
|
|
|
save_battle('Battleship',$bot1['name'],$bot2['name'],2);
|
2015-12-14 22:05:50 +01:00
|
|
|
}else{
|
2015-12-14 22:30:10 +01:00
|
|
|
save_battle('Battleship',$bot1['name'],$bot2['name'],1);
|
|
|
|
}
|
2015-12-14 23:22:12 +01:00
|
|
|
die;
|
2015-12-14 22:30:10 +01:00
|
|
|
}
|
|
|
|
|
2015-12-14 23:12:47 +01:00
|
|
|
//init grid
|
2015-12-14 23:19:10 +01:00
|
|
|
for($y = 0; $y < $postValues['gridHeight']; $y++){
|
|
|
|
for($x = 0; $x < $postValues['gridWidth']; $x++){
|
2015-12-14 23:12:47 +01:00
|
|
|
$grid[$player][$y][$x]=0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//vérifier si'il y a le bon nombre de bateaux et les placer
|
2015-12-14 22:30:10 +01:00
|
|
|
$nbBoatsIwant=array(0,$postValues['nbShip1'],$postValues['nbShip2'],$postValues['nbShip3'],
|
|
|
|
$postValues['nbShip4'],$postValues['nbShip5'],$postValues['nbShip6']);
|
|
|
|
foreach($boatsPlayer as $boat){
|
|
|
|
list($startCoord,$endCoord) = explode("-",$boat);
|
|
|
|
list($xStart,$yStart)=explode(",",$startCoord);
|
|
|
|
list($xEnd,$yEnd)=explode(",",$endCoord);
|
|
|
|
if($xStart == $xEnd){
|
2015-12-14 23:12:47 +01:00
|
|
|
$long=abs($yStart - $yEnd);
|
2015-12-14 22:30:10 +01:00
|
|
|
}else{
|
|
|
|
$long=abs($xStart - $xEnd);
|
|
|
|
}
|
|
|
|
$nbBoatsIwant[$long]-=1;
|
2015-12-14 23:12:47 +01:00
|
|
|
$grid[$player]=place_ship_on_map($xStart,$yStart,$xEnd,$yEnd,$grid[$player]);
|
|
|
|
if(!$grid[$player]){
|
2015-12-15 19:46:46 +01:00
|
|
|
echo $currentBot['name']." n'a pas placé correctement ses bateaux. Certains se chevauchent. Il perd<pre>".$anwserPlayer."</pre>";
|
2015-12-14 23:12:47 +01:00
|
|
|
if($player==1){
|
|
|
|
save_battle('Battleship',$bot1['name'],$bot2['name'],2);
|
|
|
|
}else{
|
|
|
|
save_battle('Battleship',$bot1['name'],$bot2['name'],1);
|
2015-12-14 23:22:12 +01:00
|
|
|
}
|
|
|
|
die;
|
2015-12-14 23:12:47 +01:00
|
|
|
}
|
2015-12-14 22:30:10 +01:00
|
|
|
}
|
|
|
|
foreach($nbBoatsIwant as $nb){
|
|
|
|
if($nb <> 0){
|
2015-12-15 19:46:46 +01:00
|
|
|
echo $currentBot['name']." n'a pas placé correctement ses bateaux. Il perd. sa réponse: <pre>".$anwserPlayer."</pre>";
|
2015-12-14 22:30:10 +01:00
|
|
|
if($player==1){
|
|
|
|
save_battle('Battleship',$bot1['name'],$bot2['name'],2);
|
|
|
|
}else{
|
|
|
|
save_battle('Battleship',$bot1['name'],$bot2['name'],1);
|
2015-12-14 23:22:12 +01:00
|
|
|
}
|
|
|
|
die;
|
2015-12-14 22:05:50 +01:00
|
|
|
}
|
2015-12-14 23:12:47 +01:00
|
|
|
}
|
2015-12-14 22:05:50 +01:00
|
|
|
}
|
|
|
|
|
2015-12-14 23:12:47 +01:00
|
|
|
$_SESSION['grids']=$grid;
|
|
|
|
echo json_encode($grid); die;
|
2015-12-14 21:06:01 +01:00
|
|
|
|
2015-12-14 22:05:50 +01:00
|
|
|
die;
|
2015-12-11 17:22:43 +01:00
|
|
|
|
2015-12-11 13:59:14 +01:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|