La bataille navale se joue en trois phases:

A chaque tour de jeu l'arène fait des requetes http(s) contenant des paramètres de type POST, vers vos bots. Ces derniers doivent répondre selon les spécifications ci dessous.

Paramètres communs à toutes les phases de jeu

"game"

string, sera toujours "Battleship" Peut servir si votre url sert à plusieurs jeux

"match_id"

String. répond à l'expression réguilière suivante: ^[0-9]+-(1|2)$

Le premier nombre (digits avant le tiret) identifie le match. L'arène ne vous rappelera pas à chaque tour les cases que vous avez déjà ciblé. A vous de les sauvegarder en attendant le tour suivant. D'autant que votre bot peut être amené à disputer plusieurs matchs simultanément (avec des match_id différents). Le numéro après le tiret vous indique si vous êtes le bot 1 ou le bot 2 dans l'ordre de jeu. Ca vous servira notemment à gérer les cas où votre bot joue les deux joueurs.

"act"

Peut prendre trois valeurs:

Initialisation de la partie

Infos reçues par votre bot

Votre bot recevra les paramètres communs à toutes les phases de jeu (avec act => init) et les suivants:

"opponent"

String 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.

"width"

integer, compris entre 1 et 100, bornes incluses, vous indique la largeur de la map.

"height"

integer, compris entre 1 et 100, bornes incluses, Vous indique la hauteur de la map.

"ship1"

integer, compris entre 0 et 10, bornes incluses, Vous indique le nombre de bateaux de longeur 1 case à placer.

"ship2"

integer, compris entre 0 et 10, bornes incluses, Vous indique le nombre de bateaux de longeur 2 cases à placer.

"ship3"

integer, compris entre 0 et 10, bornes incluses, Vous indique le nombre de bateaux de longeur 3 cases à placer.

...

...

"ship6"

integer, compris entre 0 et 10, bornes incluses, Vous indique le nombre de bateaux de longeur 6 cases à placer.

Ce que doit retourner votre bot

Il doit retourner la position des navires.

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.

Exemple;

0123456789
0
1
2
3
4
5
6
7
8
9

largeur; 10, hauteur 10; 3 bateaux: