orthographe dans la doc

This commit is contained in:
Gnieark 2016-11-15 18:54:27 +01:00
parent 79e3054c85
commit 15da3fd2cc
3 changed files with 166 additions and 15 deletions

View File

@ -1 +1 @@
1790 1822

View File

@ -0,0 +1,151 @@
<h2>Fonctionnement des combats de Tron</h2>
<h3>Règles du jeu (hors specs techniques)</h3>
<p>Chaque bot démarre depuis une case choisie au hasard par l'arène.</p>
<p>A chaque tour, il est demandé aux bots de grandir d'une case. Il peut choisir la direction. Sa queue s'allonge.</p>
<p>Si un bot percute une case déjà prise par sa queue ou celle d'un autre, il perd.</p>
<p>Ce n'est pas du tour par tour, les bots jouent simultanément, ils peuvent donc perdre en choisissant la même case de destination qu'un autre serpent</p>
<p>Exemple:</p>
<table class="tabledoc">
<tr><th>9</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>8</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>7</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>6</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>5</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>4</th><td class="green"></td><td class="green"></td><td class="green">oO</td><td></td><td class="red">oO</td><td class="red"></td><td></td><td></td><td></td></tr>
<tr><th>3</th><td class="green"></td><td></td><td></td><td></td><td></td><td class="red"></td><td class="red"></td><td class="red"></td><td></td></tr>
<tr><th>2</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>1</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr>
</table>
<p>Si dans le même tour le serpent vert et le serpent rouge décident d'aller respectivement vers la gauche et vers la droite, ils vont se télescoper et perdre tous les deux.</p>
<table class="tabledoc">
<tr><th>9</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>8</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>7</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>6</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>5</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>4</th><td class="green"></td><td class="green"></td><td class="green"></td><td class="brown">): :(</td><td class="red"></td><td class="red"></td><td></td><td></td><td></td></tr>
<tr><th>3</th><td class="green"></td><td></td><td></td><td></td><td></td><td class="red"></td><td class="red"></td><td class="red"></td><td></td></tr>
<tr><th>2</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>1</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr>
</table>
<p>Lorsqu'un serpent meurt, (lorsqu'un bot perd) Sa queue est effacée et les cases prises par cette dernière deviennent libres pour les serpents encore en vie.</p>
<p>Le jeu prend fin lorsqu'il reste moins de deux serpents.</p>
<h3>La grille</h3>
<ul>
<li>largeur: 1000 cases</li>
<li>hauteur: 1000 cases</li>
</ul>
<h3>Communications entre l'arène et les bots</h3>
<p>L'arène fait émet des requêtes http(s) à destination des bots.</p>
<ul>
<li>Type: POST</li>
<li>informations: au format JSON dans le corps de la requetes</li>
</ul>
<h3>Initialisation de la partie</h3>
<p>L'arène (ce site) envoie le message (exemple) suivant à votre bot:</p>
<pre>
{"game-id":"1679","action":"init","game":"tron","board":"","players":4,"player-index":2}
</pre>
<ul>
<li><em>game-id</em> String Identifiant unique de la partie. Votre bot peut être emmené à jouer plusieurs parties en simultané. Si le fonctionnement de votre bot nécessite de suivre / conserver des valeurs entre deux tours de l'arène, cet identifiant vous sera utile.</li>
<li><em>action</em> String, peut prendre les valeurs init ou play-turn, mais à cette étape, c'est init</li>
<li><em>game</em> String, sera toujours "tron" ici. Peut vous servir si vous utilisez la même URL pour plusieurs bots.</li>
<li><em>board</em> Sera vide à cette étape</li>
<li><em>players</em> Entier Vous indique le nombre de joueurs sur cette partie. Il est possible que votre bot "joue" plusieurs joueurs. Et si vous les faisiez collaborer en ce cas là?</li>
<li><em>player-index</em> Entier Le numéro de votre bot. Le premier bot a le numéro 0. Vous gardez le même numéro durant toute la partie, même si des joueurs sont déjà morts</li>
</ul>
<p>Votre bot doit répondre par un tableau au format json, comme ceci:</p>
<pre>
{"name":"botName"}
</pre>
<p>L'arène ne vérifie pas actuellement cette réponse, l'étape d'init a été insérée pour assurer la compatibilité avec <a href="https://github.com/moul/bolosseum">Bolosseum</a>.
Si votre bot repond une page blanche à cette étape (action=init), ça marchera dans le cadre de botsarena.</p>
<h3>Tours de jeu</h3>
<p>Exemple de message envoyé par l'arène au premier tour de jeu:</p>
<p>Exemple de message envoyé par l'arène après quelques tours de jeu:</p>
<pre>
{"game-id":"1680","action":"play-turn","game":"tron","board":[[[687,110],[687,111],[686,111],[686,110],[686,109],[686,108],[686,107],[685,107],[685,108],[685,109],[684,109],[684,110],[684,111],[684,112],[684,113],[683,113],[682,113],[681,113],[681,114],[681,115],[681,116],[680,116],[680,117],[679,117],[679,116],[679,115],[679,114],[679,113],[679,112],[679,111],[679,110],[679,109],[678,109],[678,108],[677,108],[676,108],[676,107],[676,106],[676,105],[676,104],[676,103],[675,103],[674,103],[674,102],[673,102],[672,102],[672,101],[671,101],[670,101],[669,101],[669,102],[669,103],[669,104],[669,105],[669,106],[669,107],[668,107],[668,108],[668,109],[668,110],[668,111],[668,112],[667,112],[667,111],[667,110],[666,110],[666,109],[666,108],[665,108],[664,108],[664,107],[664,106],[663,106],[663,107],[663,108],[662,108],[661,108],[660,108],[660,107],[659,107],[659,106],[658,106],[657,106],[657,105],[657,104],[656,104],[656,103],[655,103],[655,102],[655,101],[654,101],[654,102],[654,103],[654,104],[653,104],[653,103],[653,102],[653,101],[653,100],[652,100],[651,100],[651,101],[651,102],[651,103],[651,104],[650,104],[650,105],[650,106],[649,106],[649,105],[648,105]],[[100,225],[100,226],[100,227],[100,228],[100,229],[100,230],[100,231],[99,231],[98,231],[98,232],[97,232],[96,232],[96,231],[96,230],[96,229],[96,228],[96,227],[96,226],[96,225],[96,224],[96,223],[95,223],[95,222],[94,222],[94,221],[94,220],[93,220],[92,220],[92,219],[92,218],[92,217],[92,216],[92,215],[91,215],[91,214],[90,214],[89,214],[89,213],[89,212],[88,212],[88,213],[88,214],[87,214],[87,213],[86,213],[86,214],[86,215],[85,215],[85,214],[84,214],[84,215],[83,215],[83,216],[83,217],[82,217],[82,216],[81,216],[81,215],[80,215],[80,216],[79,216],[79,215],[79,214],[78,214],[77,214],[77,213],[77,212],[76,212],[75,212],[75,211],[75,210],[75,209],[74,209],[74,210],[74,211],[73,211],[73,210],[72,210],[72,209],[71,209],[71,210],[70,210],[70,209],[69,209],[68,209],[68,210],[68,211],[67,211],[67,210],[67,209],[67,208],[66,208],[66,207],[66,206],[66,205],[66,204],[66,203],[65,203],[65,204],[64,204],[64,203],[63,203],[63,204],[63,205],[63,206],[62,206],[61,206],[61,207],[60,207],[60,208],[59,208]]],"player-index":0,"players":2}
</pre>
<p>Les champs suivants sont les mêmes qu'au paragraphe précédent:</p>
<ul>
<li><em>game-id</em></li>
<li><em>game</em></li>
<li><em>players</em></li>
<li><em>player-index</em></li>
</ul>
Les champs qui différent sont:
<ul>
<li><em>action</em>String, est toujours "play-turn" à cette étape</li>
<li><em>board</em>Je vous explique ça au chapitre suivant.</li>
</ul>
<h4>La Carte (board)</h4>
<p>Elle est représentée dans le champs "board" du JSON envoyé par l'arène. Elle décrit les cases prises par chaque joueur.</p>
<p> Elle est composée de plusieurs sous-arrays/sous-objets (en fonction de votre language de programmation). Elle se décompose en sous tableaux de la forme suivante:<p>
<ul>
<li>Board:
<ul>
<li>Joueur 1
<ul>
<li>Case1
<ul>
<li>Coordonnée X</li>
<li>Coordonnée Y</li>
</ul>
</li>
<li>Case2
<ul>
<li>coordonnée X</li>
<li>Coordonnée Y</li>
</ul>
</li>
</ul>
</li>
<li>Joueur 2>
<ul>
<li>Case1
<ul>
<li>coordonnée X</li>
<li>Coordonnée Y</li>
</ul>
</li>
<li>Case2
<ul>
<li>coordonnée X</li>
<li>Coordonnée Y</li>
</ul>
</li>
</ul>
</li>
<li>...</li>
<ul>
</li>
</ul>
<p> La représentation JSON est la suivante:</p>
<p>
[<br />
&nbsp;&nbsp;[<br />
&nbsp;&nbsp;&nbsp;&nbsp;[x1,y1],[x2,y2],[x3,y3]<br />
&nbsp;&nbsp;],<br />
&nbsp;&nbsp;[<br />
&nbsp;&nbsp;&nbsp;&nbsp;(...)<br />
&nbsp;&nbsp;]<br />
</p>
<p>L'ordre des "queues" des serpents dans ce tableau correspond à l'ordre des joueurs. Donc votre serpent est representée par la queue correspondant à player-index (le décompte de player-index commence par 0).</p>
<p>L'ordre des couples de coordonnées de chaque bot, est dans le sens tête vers queue. Les bots grandissent à chaque tour en déplaçant leur tête.</p>
<h2>Scoring</h2>
<p>Le scorring (classement EHLO) reste sur une logique de duels, bien que ce jeu puisse contenir plus de deux bots par match. Le score est modifié au fur et à mesure de la partie à chaque fois qu'un bot "décède":</p>
<ul>
<li>Lors de la défaite d'un bot, l'arène enregistre un match nul contre tous les autres bots qui ont aussi perdu au même tour de jeu.</li>
<li>Elle enregistre aussi une défaite des bots morts contre tous les bots encore en course à la fin du tour.</li>
</ul>

View File

@ -1,6 +1,6 @@
<h2>Fonctionnement des combats de Tron</h2> <h2>Fonctionnement des combats de Tron</h2>
<h3>Règles du jeu (hors specs techniques)</h3> <h3>Règles du jeu (hors specs techniques)</h3>
<p>Chaque bot démarre depuis une case choisie au hazard par l'arène.</p> <p>Chaque bot démarre depuis une case choisie au hasard par l'arène.</p>
<p>A chaque tour, il est demandé aux bots de grandir d'une case. Il peut choisir la direction. Sa queue s'allonge.</p> <p>A chaque tour, il est demandé aux bots de grandir d'une case. Il peut choisir la direction. Sa queue s'allonge.</p>
<p>Si un bot percute une case déjà prise par sa queue ou celle d'un autre, il perd.</p> <p>Si un bot percute une case déjà prise par sa queue ou celle d'un autre, il perd.</p>
<p>Ce n'est pas du tour par tour, les bots jouent simultanément, ils peuvent donc perdre en choisissant la même case de destination qu'un autre serpent</p> <p>Ce n'est pas du tour par tour, les bots jouent simultanément, ils peuvent donc perdre en choisissant la même case de destination qu'un autre serpent</p>
@ -17,7 +17,7 @@
<tr><th>1</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>1</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr> <tr><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr>
</table> </table>
<p>Si dans le même tour le serpent vert et le serpent rouge décident d'aller respectivement vers la gauche et vers la droite, ils vont se télescopper et perdre tous les deux.</p> <p>Si dans le même tour le serpent vert et le serpent rouge décident d'aller respectivement vers la gauche et vers la droite, ils vont se télescoper et perdre tous les deux.</p>
<table class="tabledoc"> <table class="tabledoc">
<tr><th>9</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>9</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>8</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>8</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
@ -30,7 +30,7 @@
<tr><th>1</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>1</th><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr> <tr><th>0</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr>
</table> </table>
<p>Lorsqu'un serpent meurt, (lorsqu'un bot perd) Sa queue est effacée et les cases prises par cette dernière devienent libres pour les serpents encore en vie.</p> <p>Lorsqu'un serpent meurt, (lorsqu'un bot perd) Sa queue est effacée et les cases prises par cette dernière deviennent libres pour les serpents encore en vie.</p>
<p>Le jeu prend fin lorsqu'il reste moins de deux serpents.</p> <p>Le jeu prend fin lorsqu'il reste moins de deux serpents.</p>
<h3>La grille</h3> <h3>La grille</h3>
<ul> <ul>
@ -39,7 +39,7 @@
</ul> </ul>
<h3>Communications entre l'arène et les bots</h3> <h3>Communications entre l'arène et les bots</h3>
<p>L'arène fait emet des requetes http(s) à destination des bots.</p> <p>L'arène fait émet des requêtes http(s) à destination des bots.</p>
<ul> <ul>
<li>Type: POST</li> <li>Type: POST</li>
<li>informations: au format JSON dans le corps de la requetes</li> <li>informations: au format JSON dans le corps de la requetes</li>
@ -51,7 +51,7 @@
{"game-id":"1679","action":"init","game":"tron","board":"","players":4,"player-index":2} {"game-id":"1679","action":"init","game":"tron","board":"","players":4,"player-index":2}
</pre> </pre>
<ul> <ul>
<li><em>game-id</em> String Identifiant unique de la partie. Votre bot peut être emmené à jouer plusieurs parties en simultané. Si le fonctionnement de votre bot nécessite de suivre / conserver des valeurs entre deux tours dfe l'arène, cet identifiant vous sera utile.</li> <li><em>game-id</em> String Identifiant unique de la partie. Votre bot peut être emmené à jouer plusieurs parties en simultané. Si le fonctionnement de votre bot nécessite de suivre / conserver des valeurs entre deux tours de l'arène, cet identifiant vous sera utile.</li>
<li><em>action</em> String, peut prendre les valeurs init ou play-turn, mais à cette étape, c'est init</li> <li><em>action</em> String, peut prendre les valeurs init ou play-turn, mais à cette étape, c'est init</li>
<li><em>game</em> String, sera toujours "tron" ici. Peut vous servir si vous utilisez la même URL pour plusieurs bots.</li> <li><em>game</em> String, sera toujours "tron" ici. Peut vous servir si vous utilisez la même URL pour plusieurs bots.</li>
<li><em>board</em> Sera vide à cette étape</li> <li><em>board</em> Sera vide à cette étape</li>
@ -87,7 +87,7 @@ Les champs qui différent sont:
<li><em>board</em>Je vous explique ça au chapitre suivant.</li> <li><em>board</em>Je vous explique ça au chapitre suivant.</li>
</ul> </ul>
<h4>La Carte (board)</h4> <h4>La Carte (board)</h4>
<p>Elle est repésentée dans le champs "board" du JSON envoyé par l'arène. Elle décrit les cases prises par chaque joueur.</p> <p>Elle est représentée dans le champs "board" du JSON envoyé par l'arène. Elle décrit les cases prises par chaque joueur.</p>
<p> Elle est composée de plusieurs sous-arrays/sous-objets (en fonction de votre language de programmation). Elle se décompose en sous tableaux de la forme suivante:<p> <p> Elle est composée de plusieurs sous-arrays/sous-objets (en fonction de votre language de programmation). Elle se décompose en sous tableaux de la forme suivante:<p>
<ul> <ul>
<li>Board: <li>Board:
@ -96,14 +96,14 @@ Les champs qui différent sont:
<ul> <ul>
<li>Case1 <li>Case1
<ul> <ul>
<li>coordonée X</li> <li>Coordonnée X</li>
<li>Coordonée Y</li> <li>Coordonnée Y</li>
</ul> </ul>
</li> </li>
<li>Case2 <li>Case2
<ul> <ul>
<li>coordonée X</li> <li>coordonnée X</li>
<li>Coordonée Y</li> <li>Coordonnée Y</li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -112,14 +112,14 @@ Les champs qui différent sont:
<ul> <ul>
<li>Case1 <li>Case1
<ul> <ul>
<li>coordonée X</li> <li>coordonnée X</li>
<li>Coordonée Y</li> <li>Coordonnée Y</li>
</ul> </ul>
</li> </li>
<li>Case2 <li>Case2
<ul> <ul>
<li>coordonée X</li> <li>coordonnée X</li>
<li>Coordonée Y</li> <li>Coordonnée Y</li>
</ul> </ul>
</li> </li>
</ul> </ul>