if(($x >= $_SESSION['width']) OR ($y >= $_SESSION['height'])){
echo json_encode(array(
'target' => '',
'logs' => $fullLogs.$currentBot['name']." a fait un tir en dehors des limites de la carte. ".$x.",".$y." C'est interdit par les conventions de Geneve. Il perd"
The HTTP page that must generate your bot contains the position of ships.
</p>
<p>
You return a character string that is a JSON array with as many records as ships.<br/>
Each ship is defined by the coordinates of its ends.
</p>
<h2>Communications entre l'arène et votre bot</h2>
<p>Pour communiquer, l'arène (le serveur hébergeant botsarena) fait des requetes http(s) de type POST vers les bots. Le message est dans le corps de la requête au format JSON.</p>
<p>Votre bot répond par un array au format JSON.</p>
<p>Si on décompose le tableau pour l'expliquer:</p>
<ul>
<li><em>game-id</em> string identifiant la partie.</li>
<li><em>action</em> string identifiant la phase, <em>init</em> tout de suite, sera <em>play-turn</em> dans le châpitre suivant.</li>
<li><em>game</em> string identifiant le jeu. Ici, ce sera forcément battleship. ça peut servir si vous donnez une seule URL pour plusieurs bots.</li>
<li><em>players</em> Int indiquant le nombre de joueurs dans la partie, toujours 2 à la bataille navale.</li>
<li><em>player-index</em> int, L'ordre de votre bot dans les tours de jeu. Le premier joueur a la valeur 0, le deuxième 1.</li>
<li><em>board</em> un tableau vous donnant les parametres:
<ul>
<li><em>opponent</em> Chaîne de caractères identifiant votre adversaire.
Ainsi, vous pouvez pousser le délire jusqu'à faire un algorythme qui s'adapte en fonction de l'adversaire et de l'historique des combats avec ce dernier. </li>
<li><em>width</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la largeur de la map.</li>
<li><em>height</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la hauteur de la map.</li>
<li><em>ship1</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 1 case à placer.</li>
<li><em>ship2</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 2 cases à placer.</li>
<li>...</li>
<li><em>ship6</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 6 cases à placer.</li>
</ul>
</li>
</ul>
<p>Votre bot doit retourner le nom de votre bot et le placement de vos bateaux au format JSON:</p>
<li><em>game-id</em> String identifiant la partie.</li>
<li><em>action</em> String identifiant la phase, <em>play-turn</em> tout de suite, qui vous indique que vous devez jouer.</li>
<li><em>game</em> String identifiant le jeu. Ici, ce sera forcément battleship. ça peut servir si vous donnez une seulle URL pour plusieurs bots.</li>
<li><em>players</em> Int indiquant le nombre de joueurs dans la partie, toujours 2 à la bataille navale.</li>
<li><em>board</em> La carte je donne le détail ci dessous</li>
<li><em>you</em> String, Votre caractère dans la grille</li>
<li><em>player-index</em> Int, L'ordre de votre bot dans les tours de jeu. Le premier joueur a la valeur 0, le deuxième 1.</li>
</ul>
<h4>la map</h4>
<p>Elle est représentée par les éléments d'écrits à l'étape précédente et par deux sous tableaux your_strikes et his strikes</p>
<ul>
<li><em>opponent</em> Chaîne de caractères identifiant votre adversaire.
Ainsi, vous pouvez pousser le délire jusqu'à faire un algorythme qui s'adapte en fonction de l'adversaire et de l'historique des combats avec ce dernier. </li>
<li><em>width</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la largeur de la map.</li>
<li><em>height</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la hauteur de la map.</li>
<li><em>ship1</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 1 case à placer.</li>
<li><em>ship2</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 2 cases à placer.</li>
<li>...</li>
<li><em>ship6</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 6 cases à placer.</li>
<li><em>your_strikes</em> tableau vous indiquant vos tirs précédents et eur résultat</li>
<li><em>his_strikes</em> Idem, mais pour l'adversaire. Si ce dernier tire selon un modèle prédisible, vous saurez comment comment placer vos bateaux lors de la prochaine partie</li>
</ul>
<h4> your_strikes et his_strikes</h4>
<p>Chaîne de caractères représentant un array au format JSON.<br/>
Ce parametre n'est envoyé que lors de la phase de tirs du jeu (act=fight).<br/>
Il vous indique les tirs que vous avez déjà effectués et leur résultats.<br/>
Lors du premier tour de jeu, il représente un array vide:
</p>
<pre>[ ]</pre>
<p>
Lors du deuxième tour de jeu, il contient le tir précédent et son résultat :
</p>
<pre>[{"target":"2,0","result":""}]</pre>
<p>
Lors du troisième tour de jeu, les deux tirs précédents :
A chaque tour de jeu l'arène fait des requetes http(s) contenant des paramètres de type POST, vers vos bots.<br/>
Ces derniers doivent répondre selon les spécifications ci dessous.
</p>
<h2>Descriptif des paramètres envoyés par l'arène</h2>
<tableclass="tabledoc">
<tr>
<th>Paramètre</th>
<th>Description</th>
</tr>
<tr>
<td>game</td>
<td>
Chaîne de caractères, sera toujours "Battleship".<br/>
Peut servir si votre url sert à plusieurs jeux.
</td>
</tr>
<tr>
<td>match_id</td>
<td>
Chaîne de caractères. Répond à l'expression régulière suivante: ^[0-9]+-(1|2)$<br/>
Le premier nombre (digits avant le tiret) identifie le match.<br/>
Le numéro après le tiret vous indique si vous êtes le bot 1 ou le bot 2 dans l'ordre de jeu.<br/>
Ça vous servira si votre IA fait des statistiques sur les matchs.
</td>
</tr>
<tr>
<td>act</td>
<td>
Peut prendre deux valeurs :<br/>
<ul>
<li>"init" : On démarre la partie, vous devez placer vos bateaux</li>
<li>"fight" : Vous envoyez un tir</li>
</ul>
</td>
</tr>
<tr>
<td>opponent</td>
<td>
Chaîne de caractères identifiant votre adversaire.<br/>
Ainsi, vous pouvez pousser le délire jusqu'à faire un algorythme qui s'adapte en fonction de l'adversaire et de l'historique des combats avec ce dernier.
</td>
</tr>
<tr>
<td>width</td>
<td>Entier, compris entre 1 et 100, bornes incluses, vous indique la largeur de la map.</td>
</tr>
<tr>
<td>height</td>
<td>Entier, compris entre 1 et 100, bornes incluses, vous indique la hauteur de la map.</td>
</tr>
<tr>
<td>ship1</td>
<td>Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 1 case à placer.</td>
</tr>
<tr>
<td>ship2</td>
<td>Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 2 cases à placer.</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>ship6</td>
<td>Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 6 cases à placer.</td>
</tr>
<tr>
<td>your_strikes</td>
<td>
<p>
Chaîne de caractères représentant un array au format JSON.<br/>
Ce parametre n'est envoyé que lors de la phase de tirs du jeu (act=fight).<br/>
Il vous indique les tirs que vous avez déjà effectués et leur résultats.<br/>
Lors du premier tour de jeu, il représente un array vide.
</p>
<p>
<i>[ ]</i>
</p>
<p>
Lors du deuxième tour de jeu, il contient le tir précédent et son résultat :
</p>
<p>
<i>[{"target":"2,0","result":""}]</i>
</p>
<p>
Lors du troisième tour de jeu, les deux tirs précédents :
La page http que doit générer votre bot contient la position des navires.
</p>
<p>
Vous retournez une chaine de caractères qui est un tableau JSON ayant autant d'enregistrements que de navires.<br/>
Chaque navire est défini par les coordonnées de ses extrémités.
</p>
<h2>Communications entre l'arène et votre bot</h2>
<p>Pour communiquer, l'arène (le serveur hébergeant botsarena) fait des requetes http(s) de type POST vers les bots. Le message est dans le corps de la requête au format JSON.</p>
<p>Votre bot répond par un array au format JSON.</p>
<p>Si on décompose le tableau pour l'expliquer:</p>
<ul>
<li><em>game-id</em> string identifiant la partie.</li>
<li><em>action</em> string identifiant la phase, <em>init</em> tout de suite, sera <em>play-turn</em> dans le châpitre suivant.</li>
<li><em>game</em> string identifiant le jeu. Ici, ce sera forcément battleship. ça peut servir si vous donnez une seule URL pour plusieurs bots.</li>
<li><em>players</em> Int indiquant le nombre de joueurs dans la partie, toujours 2 à la bataille navale.</li>
<li><em>player-index</em> int, L'ordre de votre bot dans les tours de jeu. Le premier joueur a la valeur 0, le deuxième 1.</li>
<li><em>board</em> un tableau vous donnant les parametres:
<ul>
<li><em>opponent</em> Chaîne de caractères identifiant votre adversaire.
Ainsi, vous pouvez pousser le délire jusqu'à faire un algorythme qui s'adapte en fonction de l'adversaire et de l'historique des combats avec ce dernier. </li>
<li><em>width</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la largeur de la map.</li>
<li><em>height</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la hauteur de la map.</li>
<li><em>ship1</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 1 case à placer.</li>
<li><em>ship2</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 2 cases à placer.</li>
<li>...</li>
<li><em>ship6</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 6 cases à placer.</li>
</ul>
</li>
</ul>
<p>Votre bot doit retourner le nom de votre bot et le placement de vos bateaux au format JSON:</p>
<li><em>game-id</em> String identifiant la partie.</li>
<li><em>action</em> String identifiant la phase, <em>play-turn</em> tout de suite, qui vous indique que vous devez jouer.</li>
<li><em>game</em> String identifiant le jeu. Ici, ce sera forcément battleship. ça peut servir si vous donnez une seulle URL pour plusieurs bots.</li>
<li><em>players</em> Int indiquant le nombre de joueurs dans la partie, toujours 2 à la bataille navale.</li>
<li><em>board</em> La carte je donne le détail ci dessous</li>
<li><em>you</em> String, Votre caractère dans la grille</li>
<li><em>player-index</em> Int, L'ordre de votre bot dans les tours de jeu. Le premier joueur a la valeur 0, le deuxième 1.</li>
</ul>
<h4>la map</h4>
<p>Elle est représentée par les éléments d'écrits à l'étape précédente et par deux sous tableaux your_strikes et his strikes</p>
<ul>
<li><em>opponent</em> Chaîne de caractères identifiant votre adversaire.
Ainsi, vous pouvez pousser le délire jusqu'à faire un algorythme qui s'adapte en fonction de l'adversaire et de l'historique des combats avec ce dernier. </li>
<li><em>width</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la largeur de la map.</li>
<li><em>height</em> Entier, compris entre 1 et 100, bornes incluses, vous indique la hauteur de la map.</li>
<li><em>ship1</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 1 case à placer.</li>
<li><em>ship2</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 2 cases à placer.</li>
<li>...</li>
<li><em>ship6</em> Entier, compris entre 0 et 10, bornes incluses, vous indique le nombre de bateaux de longeur 6 cases à placer.</li>
<li><em>your_strikes</em> tableau vous indiquant vos tirs précédents et eur résultat</li>
<li><em>his_strikes</em> Idem, mais pour l'adversaire. Si ce dernier tire selon un modèle prédisible, vous saurez comment comment placer vos bateaux lors de la prochaine partie</li>
</ul>
<h4> your_strikes et his_strikes</h4>
<p>Chaîne de caractères représentant un array au format JSON.<br/>
Ce parametre n'est envoyé que lors de la phase de tirs du jeu (act=fight).<br/>
Il vous indique les tirs que vous avez déjà effectués et leur résultats.<br/>
Lors du premier tour de jeu, il représente un array vide:
</p>
<pre>[ ]</pre>
<p>
Lors du deuxième tour de jeu, il contient le tir précédent et son résultat :
</p>
<pre>[{"target":"2,0","result":""}]</pre>
<p>
Lors du troisième tour de jeu, les deux tirs précédents :