Merge pull request #23 from gnieark/dev

Dev
This commit is contained in:
Gnieark 2015-12-17 16:32:12 +01:00
commit 06ef9b5a2b
7 changed files with 218 additions and 127 deletions

View File

@ -1,9 +1,13 @@
<?php <?php
/*
function place_ship_on_map($x1,$y1,$x2,$y2,$map){ function place_ship_on_map($x1,$y1,$x2,$y2,$map){
if (($x1 <> $x2) && ($y1 <> $y2)){ if ((($x1 <> $x2) && ($y1 <> $y2))
return false; OR (!isset($map[$y1][$x1]))
OR (!isset($map[$y2][$x2]))){
return false;
} }
if($x1 == $x2){ if($x1 == $x2){
//horizontal ship //horizontal ship
if($y1 <= $y2 ){ if($y1 <= $y2 ){
@ -14,7 +18,11 @@ function place_ship_on_map($x1,$y1,$x2,$y2,$map){
$end=$y1; $end=$y1;
} }
for($i = $start; $i <= $end; $i++){ for($i = $start; $i <= $end; $i++){
$map[$i][$x1]=1; if($map[$i][$x1]==0){
$map[$i][$x1]=1;
}else{
return false;
}
} }
return $map; return $map;
} }
@ -28,11 +36,14 @@ function place_ship_on_map($x1,$y1,$x2,$y2,$map){
$end=$x1; $end=$x1;
} }
for( $i = $start; $i <= $end; $i++){ for( $i = $start; $i <= $end; $i++){
$map[$y1][$i]=1; if( $map[$y1][$i] == 0){
$map[$y1][$i]=1;
}else{
return false;
}
} }
return $map; return $map;
} }
} }
switch($_POST['act']){ switch($_POST['act']){
case "init": case "init":
@ -57,11 +68,11 @@ switch($_POST['act']){
if(!preg_match('/^[0-9]+-(1|2)$/',$match_id)){ if(!preg_match('/^[0-9]+-(1|2)$/',$match_id)){
echo "parametre incorrect"; die; echo "parametre incorrect"; die;
} }
$map=array();
//construire une grille //construire une grille
for($i=0; $i < $width; $i++){ for($i=0; $i < $width; $i++){
for($j=0; $j < $height; $j++){ for($j=0; $j < $height; $j++){
$map[$i][$j]=0; $map[$j][$i]=0;
} }
} }
@ -72,68 +83,58 @@ switch($_POST['act']){
//nombre de bateau à placer de cette taille //nombre de bateau à placer de cette taille
$dynVar='ship'.$shipWidth; $dynVar='ship'.$shipWidth;
$shipCount=$$dynVar; // #trollface $shipCount=$$dynVar; // #trollface
for( $sh = 0; $sh < $shipCount; $sh++){ for( $sh = 0; $sh < $shipCount; $sh++){ //loop for all boats witch size is $shipWidth
$directions=array(); $directions=array();
while( count($directions) == 0){ while( count($directions) == 0){
do{ do{
$xtest=rand(0,$width -1); $xtest=rand(0,$width -1);
$ytest=rand(0,$height -1); $ytest=rand(0,$height -1);
}while($map[$ytest][$xtest] == 1); }while($map[$ytest][$xtest] == 1);
//Y a t'il la place pour le bateau vers le haut? //Y a t'il la place pour le bateau vers le haut?
if($ytest < $shipWidth){
$top=false; //haut
}else{ $top=true;
$top=true; for($i = $ytest; $i >= $ytest - $shipWidth + 1; $i--){
for($i = $ytest; $i > $ytest - $shipWidth; $i--){ if ((!isset($map[$i][$xtest]))
if($map[$i][$xtest] == 1){ OR ($map[$i][$xtest] == 1)){
$top=false; $top=false;
break; break;
}
} }
} }
//vers le bas //vers le bas
if($ytest + $shipWidth > $height){ $bottom=true;
$bottom=false; for($i = $ytest; $i < $ytest + $shipWidth -1; $i++){
}else{ if ((!isset($map[$i][$xtest]))
$bottom=true; OR ($map[$i][$xtest] == 1)){
for($y=$ytest; $i < $ytest + $shipWidth; $i++){ $bottom=false;
if($map[$i][$xtest] == 1){ break;
$bottom=false;
break;
}
} }
} }
//droite //droite
if($xtest + $shipWidth > $width){ $right=true;
$right=false; for($i = $xtest; $i < $xtest + $shipWidth -1; $i++){
}else{ if((!isset($map[$ytest][$i]))
$right=true; OR($map[$ytest][$i] == 1)){
for($i = $xtest; $i < $xtest + $shipWidth; $i++){ $right= false;
if($map[$ytest][$i] == 1){ break;
$right= false;
break;
}
} }
} }
//gauche //gauche
if($xtest < $shipWidth){ $left=true;
$left=false; for($i = $xtest; $i >= $xtest - $shipWidth + 1; $i--){
}else{ if((!isset($map[$ytest][$i]))
$left=true; OR($map[$ytest][$i] == 1)){
for($i = $xtest; $i > $xtest - $shipWidth; $i--){ $left= false;
if($map[$ytest][$i] == 1){ break;
$left= false;
break;
}
} }
} }
$directions=array(); $directions=array();
if($top){ if($top){
$directions[]='top'; $directions[]='top';
@ -152,27 +153,27 @@ switch($_POST['act']){
shuffle($directions); shuffle($directions);
switch($directions[0]){ switch($directions[0]){
case 'top': case 'top':
$shipsCoords[]=$xtest.",".$ytest."-".$xtest.",".($ytest - $shipWidth); $shipsCoords[]=$xtest.",".$ytest."-".$xtest.",".($ytest - $shipWidth + 1);
$map= place_ship_on_map($xtest,$ytest,$xtest,$ytest - $shipWidth,$map); $map= place_ship_on_map($xtest,$ytest,$xtest,$ytest - $shipWidth + 1,$map);
break; break;
case 'bottom': case 'bottom':
$shipsCoords[]=$xtest.",".$ytest."-".$xtest.",".($ytest + $shipWidth); $shipsCoords[]=$xtest.",".$ytest."-".$xtest.",".($ytest + $shipWidth - 1);
$map= place_ship_on_map($xtest,$ytest,$xtest,$ytest + $shipWidth,$map); $map= place_ship_on_map($xtest,$ytest,$xtest,$ytest + $shipWidth -1 ,$map);
break; break;
case 'left': case 'left':
$shipsCoords[]=$xtest.",".$ytest."-".($xtest - $shipWidth).",".$ytest; $shipsCoords[]=$xtest.",".$ytest."-".($xtest - $shipWidth + 1).",".$ytest;
$map= place_ship_on_map($xtest,$ytest,$xtest - $shipWidth ,$ytest,$map); $map= place_ship_on_map($xtest,$ytest,$xtest - $shipWidth + 1 ,$ytest,$map);
break; break;
case 'right': case 'right':
$shipsCoords[]=$xtest.",".$ytest."-".($xtest + $shipWidth).",".$ytest; $shipsCoords[]=$xtest.",".$ytest."-".($xtest + $shipWidth - 1 ).",".$ytest;
$map= place_ship_on_map($xtest,$ytest,$xtest + $shipWidth ,$ytest,$map); $map= place_ship_on_map($xtest,$ytest,$xtest + $shipWidth -1 ,$ytest,$map);
break; break;
} }
} }
} }
print_r($map);
echo json_encode($shipsCoords); echo json_encode($shipsCoords);
break; break;
default: default:

View File

@ -90,6 +90,9 @@ if(isset($_GET['arena'])){
$mainSectionScript="../src/arenas/".$currentArenaArr['id']."/doc-".$lang['lang'].".html"; $mainSectionScript="../src/arenas/".$currentArenaArr['id']."/doc-".$lang['lang'].".html";
$asideSectionContent=''; //to do $asideSectionContent=''; //to do
$cssAdditionalScript=""; $cssAdditionalScript="";
if(isset($currentArenaArr['cssFile'])){
$cssAdditionalScript.='<style type="text/css"><!--'."\n".file_get_contents("../src/arenas/".$currentArena."/".$currentArenaArr['cssFile'])."\n--></style>";
}
$jsAdditionalScript=""; $jsAdditionalScript="";
}elseif(isset($_GET['page'])){ }elseif(isset($_GET['page'])){

View File

@ -57,6 +57,10 @@ switch ($_POST['act']){
error (500,"missing parameter 2"); error (500,"missing parameter 2");
} }
if(!is_it_possible_to_place_ships_on_grid($postValues['gridWidth'],$postValues['gridHeight'],$postValues['nbShip1'],$posValues['nbship2'],$postValues['nbship3'],$postValues['nbship4'],$postValues['nbship5'],$postvalues['nbship6'])){
error (404,"grid is too little for these sips");
}
//vars checked, lets init the initGame //vars checked, lets init the initGame
$_SESSION['matchId']=get_unique_id(); $_SESSION['matchId']=get_unique_id();
@ -90,7 +94,7 @@ switch ($_POST['act']){
$anwserPlayer=get_IA_Response($currentBot['url'],$botParamsToSend); $anwserPlayer=get_IA_Response($currentBot['url'],$botParamsToSend);
$boatsPlayer = json_decode( html_entity_decode($anwserPlayer)); $boatsPlayer = json_decode( html_entity_decode($anwserPlayer));
if(!$boatsPlayer){ if(!$boatsPlayer){
echo $currentBot['name']." a fait une réponse non conforme, il perd."; echo $currentBot['name']." a fait une réponse non conforme, il perd.".$anwserPlayer;
if($player==1){ if($player==1){
save_battle('Battleship',$bot1['name'],$bot2['name'],2); save_battle('Battleship',$bot1['name'],$bot2['name'],2);
}else{ }else{
@ -109,19 +113,20 @@ switch ($_POST['act']){
//vérifier si'il y a le bon nombre de bateaux et les placer //vérifier si'il y a le bon nombre de bateaux et les placer
$nbBoatsIwant=array(0,$postValues['nbShip1'],$postValues['nbShip2'],$postValues['nbShip3'], $nbBoatsIwant=array(0,$postValues['nbShip1'],$postValues['nbShip2'],$postValues['nbShip3'],
$postValues['nbShip4'],$postValues['nbShip5'],$postValues['nbShip6']); $postValues['nbShip4'],$postValues['nbShip5'],$postValues['nbShip6']);
foreach($boatsPlayer as $boat){ foreach($boatsPlayer as $boat){
list($startCoord,$endCoord) = explode("-",$boat); list($startCoord,$endCoord) = explode("-",$boat);
list($xStart,$yStart)=explode(",",$startCoord); list($xStart,$yStart)=explode(",",$startCoord);
list($xEnd,$yEnd)=explode(",",$endCoord); list($xEnd,$yEnd)=explode(",",$endCoord);
if($xStart == $xEnd){ if($xStart == $xEnd){
$long=abs($yStart - $yEnd); $long=abs($yStart - $yEnd +1);
}else{ }else{
$long=abs($xStart - $xEnd); $long=abs($xStart - $xEnd +1);
} }
$nbBoatsIwant[$long]-=1; $nbBoatsIwant[$long]-=1;
$grid[$player]=place_ship_on_map($xStart,$yStart,$xEnd,$yEnd,$grid[$player]); $grid[$player]=place_ship_on_map($xStart,$yStart,$xEnd,$yEnd,$grid[$player]);
if(!$grid[$player]){ if(!$grid[$player]){
echo $currentBot['name']." n'a pas placé correctement ses bateaux. Certains se chevauchent. Il perd"; echo $currentBot['name']." n'a pas placé correctement ses bateaux. Certains se chevauchent. Il perd<pre>".$anwserPlayer." ".$xStart.$yStart.$xEnd.$yEnd."</pre>";
if($player==1){ if($player==1){
save_battle('Battleship',$bot1['name'],$bot2['name'],2); save_battle('Battleship',$bot1['name'],$bot2['name'],2);
}else{ }else{
@ -132,7 +137,7 @@ switch ($_POST['act']){
} }
foreach($nbBoatsIwant as $nb){ foreach($nbBoatsIwant as $nb){
if($nb <> 0){ if($nb <> 0){
echo $currentBot['name']." n'a pas placé correctement ses bateaux. Il perd"; echo $currentBot['name']." n'a pas placé correctement ses bateaux. Il perd. sa réponse: <pre>".$anwserPlayer."</pre>";
if($player==1){ if($player==1){
save_battle('Battleship',$bot1['name'],$bot2['name'],2); save_battle('Battleship',$bot1['name'],$bot2['name'],2);
}else{ }else{

View File

@ -39,5 +39,36 @@
<h4>"ship6"</h4> <h4>"ship6"</h4>
<p>integer, compris entre 0 et 10, bornes incluses, Vous indique le nombre de bateaux de longeur 6 cases à placer.</p> <p>integer, compris entre 0 et 10, bornes incluses, Vous indique le nombre de bateaux de longeur 6 cases à placer.</p>
<h3>Ce que doit retourner votre bot</h3> <h3>Ce que doit retourner votre bot</h3>
Il doit retourner la position des navires. <p>Il doit retourner la position des navires.</p>
<p>Vous retournez un tableau JSON ayant autant d'enregistrement que de navires.
Chaque navire est défini par les coordonnées de ses extrémités.</p>
<ul>
<li>La grille commence au point 0,0.</li>
<li>Les entiers; ordonnée et abscisses définissant un point sont séparés d'une virgule &quot;,&quot;.</li>
<li>Les deux points définissant les extrémités d'un navire sont séparés par un tiret &quot;-&quot;.</li>
</ul>
<h4>Exemple:</h4>
<table class="battleshipGrid nofloat" id="tbl1">
<tr><td></td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td></tr>
<tr><td>0</td><td class="empty" id="bot1-0-0"></td><td class="shipOn" id="bot1-0-1"></td><td class="empty" id="bot1-0-2"></td><td class="empty" id="bot1-0-3"></td><td class="empty" id="bot1-0-4"></td><td class="empty" id="bot1-0-5"></td><td class="empty" id="bot1-0-6"></td><td class="empty" id="bot1-0-7"></td><td class="empty" id="bot1-0-8"></td><td class="empty" id="bot1-0-9"></td></tr>
<tr><td>1</td><td class="empty" id="bot1-1-0"></td><td class="shipOn" id="bot1-1-1"></td><td class="empty" id="bot1-1-2"></td><td class="empty" id="bot1-1-3"></td><td class="empty" id="bot1-1-4"></td><td class="empty" id="bot1-1-5"></td><td class="empty" id="bot1-1-6"></td><td class="empty" id="bot1-1-7"></td><td class="empty" id="bot1-1-8"></td><td class="empty" id="bot1-1-9"></td></tr>
<tr><td>2</td><td class="empty" id="bot1-2-0"></td><td class="shipOn" id="bot1-2-1"></td><td class="empty" id="bot1-2-2"></td><td class="empty" id="bot1-2-3"></td><td class="empty" id="bot1-2-4"></td><td class="empty" id="bot1-2-5"></td><td class="empty" id="bot1-2-6"></td><td class="empty" id="bot1-2-7"></td><td class="empty" id="bot1-2-8"></td><td class="empty" id="bot1-2-9"></td></tr>
<tr><td>3</td><td class="empty" id="bot1-3-0"></td><td class="shipOn" id="bot1-3-1"></td><td class="empty" id="bot1-3-2"></td><td class="empty" id="bot1-3-3"></td><td class="empty" id="bot1-3-4"></td><td class="empty" id="bot1-3-5"></td><td class="empty" id="bot1-3-6"></td><td class="empty" id="bot1-3-7"></td><td class="empty" id="bot1-3-8"></td><td class="empty" id="bot1-3-9"></td></tr>
<tr><td>4</td><td class="empty" id="bot1-4-0"></td><td class="empty" id="bot1-4-1"></td><td class="shipOn" id="bot1-4-2"></td><td class="shipOn" id="bot1-4-3"></td><td class="empty" id="bot1-4-4"></td><td class="empty" id="bot1-4-5"></td><td class="empty" id="bot1-4-6"></td><td class="empty" id="bot1-4-7"></td><td class="empty" id="bot1-4-8"></td><td class="empty" id="bot1-4-9"></td></tr>
<tr><td>5</td><td class="empty" id="bot1-5-0"></td><td class="empty" id="bot1-5-1"></td><td class="empty" id="bot1-5-2"></td><td class="empty" id="bot1-5-3"></td><td class="empty" id="bot1-5-4"></td><td class="empty" id="bot1-5-5"></td><td class="empty" id="bot1-5-6"></td><td class="empty" id="bot1-5-7"></td><td class="empty" id="bot1-5-8"></td><td class="empty" id="bot1-5-9"></td></tr>
<tr><td>6</td><td class="empty" id="bot1-6-0"></td><td class="empty" id="bot1-6-1"></td><td class="empty" id="bot1-6-2"></td><td class="shipOn" id="bot1-6-3"></td><td class="shipOn" id="bot1-6-4"></td><td class="shipOn" id="bot1-6-5"></td><td class="empty" id="bot1-6-6"></td><td class="empty" id="bot1-6-7"></td><td class="empty" id="bot1-6-8"></td><td class="empty" id="bot1-6-9"></td></tr>
<tr><td>7</td><td class="empty" id="bot1-7-0"></td><td class="empty" id="bot1-7-1"></td><td class="empty" id="bot1-7-2"></td><td class="empty" id="bot1-7-3"></td><td class="empty" id="bot1-7-4"></td><td class="empty" id="bot1-7-5"></td><td class="empty" id="bot1-7-6"></td><td class="empty" id="bot1-7-7"></td><td class="empty" id="bot1-7-8"></td><td class="empty" id="bot1-7-9"></td></tr>
<tr><td>8</td><td class="empty" id="bot1-8-0"></td><td class="empty" id="bot1-8-1"></td><td class="empty" id="bot1-8-2"></td><td class="empty" id="bot1-8-3"></td><td class="empty" id="bot1-8-4"></td><td class="empty" id="bot1-8-5"></td><td class="empty" id="bot1-8-6"></td><td class="empty" id="bot1-8-7"></td><td class="empty" id="bot1-8-8"></td><td class="empty" id="bot1-8-9"></td></tr>
<tr><td>9</td><td class="empty" id="bot1-9-0"></td><td class="empty" id="bot1-9-1"></td><td class="empty" id="bot1-9-2"></td><td class="empty" id="bot1-9-3"></td><td class="empty" id="bot1-9-4"></td><td class="empty" id="bot1-9-5"></td><td class="empty" id="bot1-9-6"></td><td class="empty" id="bot1-9-7"></td><td class="empty" id="bot1-9-8"></td><td class="empty" id="bot1-9-9"></td></tr>
</table>
<p>largeur; 10, hauteur 10; 3 bateaux:</p>
<ul>
<li>Bateau de 4 cases ayant pour extrémités 1,0 et 1,3. sera noté &quot;1,0-1,3&quot; ou &quot;1,3-1,0&quot;</li>
<li>Bateau de 2 cases ayant pour extrémités 2,4 et 3,4. sera noté &quot;2,4-3,4&quot; ou &quot;3,4-2,4&quot;</li>
<li>Bateau de 3 cases ayant pour extrémités 3,6 et 5,6. sera noté &quot;3,6-5,6&quot; ou &quot;5,6-3,6&quot;</li>
</ul>
<p>Pour placer ces 3 bateaux, vous devez retourner au format JSON le tableau suivant:</p>
<pre>
&#91;&quot;1,0-1,3&quot;,&quot;2,4-3,4&quot;,&quot;3,6-5,6&quot;&#93;
</pre>

View File

@ -1,5 +1,27 @@
<?php <?php
function get_Post_Params($botsCount){ function is_it_possible_to_place_ships_on_grid($gridWidth,$gridHeight,$nbShipsSize1,$nbShipsSize2,$nbShipsSize3,$nbShipsSize4,$nbShipsSize5,$nbShipsSize6){
//return false or true
//not a perfect solution
$shipsArea=$nbShipsSize1 + 2 * $nbShipsSize2 + 3 * $nbShipsSize3 + 4 * $nbShipsSize4 + 5 * $nbShipsSize5 + 6 * $nbShipsSize6;
if( $shipsArea < $gridHeight * $gridwidth / 2){
return false;
}
//longest ship
for($i=6; $i > 0; $i--){
$var='nbShipsSize'.$i;
if($$var > 0){
$longestShip=$$var;
break;
}
}
if( (!isset($longestShip))
OR(($longestShip > $gridWidth) && ($longestShip > $gridHeight))
){
return false;
}
return true;
}
function get_Post_Params($ccbotsCount){
$keysBots=array('bot1','bot2'); $keysBots=array('bot1','bot2');
foreach($keysBots as $botKey){ foreach($keysBots as $botKey){
if(!isset($_POST[$botKey])){ if(!isset($_POST[$botKey])){
@ -53,6 +75,8 @@ function get_IA_Response($iaUrl,$postParams){
curl_close($ch); curl_close($ch);
return htmlentities($output); return htmlentities($output);
} }
function place_ship_on_map($x1,$y1,$x2,$y2,$map){ function place_ship_on_map($x1,$y1,$x2,$y2,$map){
if ((($x1 <> $x2) && ($y1 <> $y2)) if ((($x1 <> $x2) && ($y1 <> $y2))
OR (!isset($map[$y1][$x1])) OR (!isset($map[$y1][$x1]))

View File

@ -21,35 +21,57 @@ function createElem(type,attributes)
} }
function battleship(bot1,bot2,gridWidth,gridHeight,nbShip1,nbShip2,nbShip3,nbShip4,nbShip5,nbShip6,xd_check){ function battleship(bot1,bot2,gridWidth,gridHeight,nbShip1,nbShip2,nbShip3,nbShip4,nbShip5,nbShip6,xd_check){
var bot1IdName = bot1.split("-");
var bot2IdName = bot2.split("-"); var shipsArea= parseInt(nbShip1) + 2 * parseInt(nbShip2) + 3 * parseInt(nbShip3) + 4 * parseInt(nbShip4) + 5 * parseInt(nbShip5) + 6 * parseInt(nbShip6);
if(shipsArea > parseInt(gridWidth * gridHeight / 2) ){
alert("Map is too small. Sum of ships areas must be under 50% of the map." + shipsArea + " ");
return;
}
var ships= [0,parseInt(nbShip1),parseInt(nbShip2),parseInt(nbShip3),parseInt(nbShip4),parseInt(nbShip5),parseInt(nbShip6)];
var longestShip=0;
for(var i = 6; i > 0; i--){
if(ships[i] > 0){
longestShip=ships[i];
break;
}
}
if((longestShip==0)
||((longestShip > gridWidth) && (longestShip > gridHeight))
){
alert ("Map is too small. Grow it or reduce ships");
return;
}
var bot1IdName = bot1.split("-");
var bot2IdName = bot2.split("-");
document.getElementById('fightResult').innerHTML = ''; document.getElementById('fightResult').innerHTML = '';
//dessiner les deux grilles //dessiner les deux grilles
var tableAdv=createElem("table",{"id":"tbl1","class":"battleshipGrid"}); var tableAdv=createElem("table",{"id":"tbl1","class":"battleshipGrid"});
var tableMe=createElem("table",{"id":"tbl2","class":"battleshipGrid"}); var tableMe=createElem("table",{"id":"tbl2","class":"battleshipGrid"});
//ligne de titre //ligne de titre
var trTitre1=createElem("tr"); var trTitre1=createElem("tr");
var trTitre2=createElem("tr"); var trTitre2=createElem("tr");
var tdTitre1=createElem("th",{"colspan":gridWidth}); var tdTitre1=createElem("th",{"colspan":gridWidth});
var tdTitre2=createElem("th",{"colspan":gridWidth}); var tdTitre2=createElem("th",{"colspan":gridWidth});
tdTitre1.innerHTML = bot1IdName[1]; tdTitre1.innerHTML = bot1IdName[1];
tdTitre2.innerHTML = bot2IdName[1]; tdTitre2.innerHTML = bot2IdName[1];
trTitre1.appendChild(tdTitre1); trTitre1.appendChild(tdTitre1);
tableAdv.appendChild(trTitre1); tableAdv.appendChild(trTitre1);
trTitre2.appendChild(tdTitre2); trTitre2.appendChild(tdTitre2);
tableMe.appendChild(trTitre2); tableMe.appendChild(trTitre2);
for (var i=0; i < gridHeight ; i++){ for (var i=0; i < gridHeight ; i++){
var trAdv=createElem("tr"); var trAdv=createElem("tr");
var trMe=createElem("tr"); var trMe=createElem("tr");
for (var j=0; j < gridWidth ; j++){ for (var j=0; j < gridWidth ; j++){
var tdAdv=createElem("td",{"id":"bot1-" + i +"-" + j,"class": "empty"}); var tdAdv=createElem("td",{"id":"bot1-" + i +"-" + j,"class": "empty"});
var tdMe=createElem("td",{"id":"bot2-" + i +"-" + j,"class": "empty"}); var tdMe=createElem("td",{"id":"bot2-" + i +"-" + j,"class": "empty"});
trAdv.appendChild(tdAdv); trAdv.appendChild(tdAdv);
trMe.appendChild(tdMe); trMe.appendChild(tdMe);
} }
tableAdv.appendChild(trAdv); tableAdv.appendChild(trAdv);
tableMe.appendChild(trMe); tableMe.appendChild(trMe);
} }
document.getElementById('fightResult').appendChild(tableAdv); document.getElementById('fightResult').appendChild(tableAdv);
document.getElementById('fightResult').appendChild(tableMe); document.getElementById('fightResult').appendChild(tableMe);
@ -60,42 +82,46 @@ function battleship(bot1,bot2,gridWidth,gridHeight,nbShip1,nbShip2,nbShip3,nbShi
var xhr = Ajx(); var xhr = Ajx();
xhr.onreadystatechange = function(){if(xhr.readyState == 4){ xhr.onreadystatechange = function(){if(xhr.readyState == 4){
if(xhr.status == 200) { if(xhr.status == 200) {
//debug //debug
//alert(xhr.responseText); //alert(xhr.responseText);
try{ try{
var grids = JSON.parse(xhr.responseText); var grids = JSON.parse(xhr.responseText);
for( var player=1; player <= 2 ; player ++){ for( var player=1; player <= 2 ; player ++){
for (var y=0; y < grids[player].length ; y++){ var p=createElem("p");
for (var x=0; x < grids[player][y].length ; x++){ p.innerHTML='Reponse joueurs:' + xhr.responseText;
if (grids[player][y][x] == 1){ document.getElementById('logs').appendChild(p);
document.getElementById( 'bot' + player + '-' + y + '-' + x).className="shipOn";
}
}
}
}
} for (var y=0; y < grids[player].length ; y++){
catch(e){ for (var x=0; x < grids[player][y].length ; x++){
document.getElementById('logs').innerHTML = xhr.responseText; if (grids[player][y][x] == 1){
document.getElementById( 'bot' + player + '-' + y + '-' + x).className="shipOn";
}
}
}
}
} }
} catch(e){
}}; document.getElementById('logs').innerHTML = xhr.responseText;
xhr.open("POST", '/Battleship', true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); }
xhr.send( }
'act=initGame&bot1=' + bot1IdName[0] }};
+ '&bot2=' + bot2IdName[0] xhr.open("POST", '/Battleship', true);
+ '&gridWidth=' + gridWidth xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ '&gridHeight=' + gridHeight xhr.send(
+ '&nbShip1=' + nbShip1 'act=initGame&bot1=' + bot1IdName[0]
+ '&nbShip2=' + nbShip2 + '&bot2=' + bot2IdName[0]
+ '&nbShip3=' + nbShip3 + '&gridWidth=' + gridWidth
+ '&nbShip4=' + nbShip4 + '&gridHeight=' + gridHeight
+ '&nbShip5=' + nbShip5 + '&nbShip1=' + nbShip1
+ '&nbShip6=' + nbShip6 + '&nbShip2=' + nbShip2
+ '&xd_check=' + xd_check + '&nbShip3=' + nbShip3
); + '&nbShip4=' + nbShip4
+ '&nbShip5=' + nbShip5
+ '&nbShip6=' + nbShip6
+ '&xd_check=' + xd_check
);
} }

View File

@ -3,6 +3,7 @@ article p label {float:left; text-align:right; width:60%}
article p select {} article p select {}
td{min-width: 15px; height: 15px;} td{min-width: 15px; height: 15px;}
.battleshipGrid{float: left; border-collapse:collapse; margin: 20px 20px 20px 20px;} .battleshipGrid{float: left; border-collapse:collapse; margin: 20px 20px 20px 20px;}
.nofloat{float: none;}
.battleshipGrid tr{} .battleshipGrid tr{}
.battleshipGrid tr td{border: 1px dashed green;} .battleshipGrid tr td{border: 1px dashed green;}
.battleshipGrid tr th{text-align: center;} .battleshipGrid tr th{text-align: center;}