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
}
2015-12-17 18:50:13 +01:00
if ( ! is_it_possible_to_place_ships_on_grid ( $postValues [ 'gridWidth' ], $postValues [ 'gridHeight' ], $postValues [ 'nbShip1' ], $postValues [ 'nbship2' ], $postValues [ 'nbship3' ], $postValues [ 'nbship4' ], $postValues [ 'nbship5' ], $postvalues [ 'nbship6' ])){
2015-12-17 16:09:28 +01:00
error ( 404 , " grid is too little for these sips " );
}
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 ){
2015-12-15 22:41:57 +01:00
echo $currentBot [ 'name' ] . " a fait une réponse non conforme, il perd. " . $anwserPlayer ;
2015-12-14 22:30:10 +01:00
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' ]);
2015-12-15 23:45:53 +01:00
2015-12-14 22:30:10 +01:00
foreach ( $boatsPlayer as $boat ){
list ( $startCoord , $endCoord ) = explode ( " - " , $boat );
list ( $xStart , $yStart ) = explode ( " , " , $startCoord );
list ( $xEnd , $yEnd ) = explode ( " , " , $endCoord );
if ( $xStart == $xEnd ){
2015-12-15 22:40:46 +01:00
$long = abs ( $yStart - $yEnd + 1 );
2015-12-14 22:30:10 +01:00
} else {
2015-12-15 22:40:46 +01:00
$long = abs ( $xStart - $xEnd + 1 );
2015-12-14 22:30:10 +01:00
}
$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 23:45:53 +01:00
echo $currentBot [ 'name' ] . " n'a pas placé correctement ses bateaux. Certains se chevauchent. Il perd<pre> " . $anwserPlayer . " " . $xStart . $yStart . $xEnd . $yEnd . " </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 ;
}