<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Prologin 2015 : Briefing détaillé &mdash; Prologin Serveur 2015</title>
    
    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <script type="text/javascript" src="_static/translations.js"></script>
    <link rel="top" title="Prologin Serveur 2015" href="index.html" />
    <link rel="next" title="Finale Prologin 2015 - FAQ" href="faq-candidat.html" />
    <link rel="prev" title="Prologin Serveur 2015" href="index.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="Index général"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="faq-candidat.html" title="Finale Prologin 2015 - FAQ"
             accesskey="N">suivant</a> |</li>
        <li class="right" >
          <a href="index.html" title="Prologin Serveur 2015"
             accesskey="P">précédent</a> |</li>
        <li><a href="index.html">Prologin Serveur 2015</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="prologin-2015-briefing-detaille">
<h1>Prologin 2015 : Briefing détaillé<a class="headerlink" href="#prologin-2015-briefing-detaille" title="Lien permanent vers ce titre">¶</a></h1>
<div class="section" id="synthese-executive">
<h2>Synthèse exécutive<a class="headerlink" href="#synthese-executive" title="Lien permanent vers ce titre">¶</a></h2>
<p>Votre objectif est de créer une intelligence artificielle pour une
simulation d&#8217;une guerre de contrôle mental d&#8217;un territoire par
l&#8217;utilisation de portails.</p>
<p>Cette simulation prend la forme d&#8217;un jeu de stratégie en tour par tour
qui se déroule sur une carte sur laquelle sont présents des portails.</p>
<p>Deux agents interagissent lors d&#8217;une simulation, l&#8217;agent <em>bleu</em> et
l&#8217;agent <em>vert</em>. Les portails, les liens et les champs apparaissent sur
la carte de la même couleur que l&#8217;agent qui les possède. Les agents
jouent chacun leur tour pendant toute la partie. Le but est de lier les
portails entre eux afin de créer des champs de contrôle, et ainsi
contrôler la plus grande aire possible.</p>
</div>
<div class="section" id="etat-de-la-simulation">
<h2>État de la simulation<a class="headerlink" href="#etat-de-la-simulation" title="Lien permanent vers ce titre">¶</a></h2>
<div class="section" id="carte">
<h3>Carte<a class="headerlink" href="#carte" title="Lien permanent vers ce titre">¶</a></h3>
<p>La carte consiste en une grille carrée, de <tt class="docutils literal"><span class="pre">TAILLE_TERRAIN</span></tt> cases de
côté. (La valeur de <tt class="docutils literal"><span class="pre">TAILLE_TERRAIN</span></tt> est la même pour toutes les
cartes.) Des portails y sont disposés ; leur nombre et leur position
varient selon la carte et restent constants durant toute une
partie. Il en va de même pour les positions de départ des agents.</p>
</div>
<div class="section" id="portails-liens-et-champs">
<h3>Portails, liens et champs<a class="headerlink" href="#portails-liens-et-champs" title="Lien permanent vers ce titre">¶</a></h3>
<p>Chaque portail peut être soit neutre, soit <em>contrôlé</em> (on dira aussi
<em>possédé</em>) par l&#8217;un des deux agents.</p>
<p>Un agent contrôlant deux portails peut les joindre par un <em>lien</em>, qui
se matérialise sur la carte par un segment entre les deux portails.
L&#8217;agent qui contrôle les deux portails aux extrémités est considéré
comme possesseur du lien.</p>
<p>Lorsque trois portails sont tous reliés entre eux, l&#8217;intérieur du
triangle constitué par ces liens forme un <em>champ</em>. Les trois portails
du champ sont alors forcément contrôlés par le même agent, dont on
dira qu&#8217;il possède le champ.</p>
<p>Une <em>interférence</em> entre deux liens, c&#8217;est-à-dire une intersection ou
une superposition entre les deux segments, ne pourra <em>jamais</em> se
produire et <em>toute action devant mener à une telle situation sera
interdite par les règles</em>. Notez que cette condition est indépendante
des possesseurs des liens.</p>
<p>De plus, la seule façon pour un lien de recontrer l&#8217;intérieur d&#8217;un
champ sera d&#8217;être entièrement inclus dans ce champ, qui aura été
construit après le lien.</p>
<p>Tous les triangles de la carte sont considérés comme des champs de
contrôle, et pas simplement les faces triangulaires. Ainsi, sur la
figure suivante, il faut compter 4 triangles : les trois faces et le
triangle extérieur.</p>
<div class="figure">
<img alt="Exemple de configuration de liens entre 4 portails." src="triangle3.svg" /></div>
</div>
<div class="section" id="agent">
<h3>Agent<a class="headerlink" href="#agent" title="Lien permanent vers ce titre">¶</a></h3>
<p>Chaque IA contrôle un agent positionné sur la carte. La position de
l&#8217;agent n&#8217;est soumise à aucune restriction, si ce n&#8217;est de rester à
l&#8217;intérieur de la carte : un agent pourra tout autant se trouver sur
un portail, sur une case non-portail, sur une case traversée par un
lien, à l&#8217;intérieur d&#8217;un champ ou à l&#8217;extérieur de tout champ, etc.</p>
</div>
</div>
<div class="section" id="deroulement-d-un-tour">
<h2>Déroulement d&#8217;un tour<a class="headerlink" href="#deroulement-d-un-tour" title="Lien permanent vers ce titre">¶</a></h2>
<p>Au début de chacun de vos tours, vous vous verrez octroyer
<tt class="docutils literal"><span class="pre">NB_POINTS_DEPLACEMENT</span></tt> <em>points de déplacement</em>, et
<tt class="docutils literal"><span class="pre">NB_POINTS_ACTION</span></tt> <em>points d&#8217;action</em>. Les compteurs des points sont
remis à cette valeur à chaque début de tour (il n&#8217;y a pas de cumul de
points sur plusieurs tours), et ne peuvent jamais atteindre une valeur
négative.</p>
<p>Pour consommer ces points, vous pouvez effectuer les actions énumérées
ci-dessous. Vous pouvez jouer autant d&#8217;actions que vous voulez durant
un tour, dans n&#8217;importe quel ordre, tant que vous avez suffisamment de
points.</p>
<div class="section" id="deplacement">
<h3>Déplacement<a class="headerlink" href="#deplacement" title="Lien permanent vers ce titre">¶</a></h3>
<p>Pour déplacer la position de votre agent, vous devez dépenser un
nombre de points de déplacement égal à la distance de Manhattan
(calculée par la fonction <tt class="docutils literal"><span class="pre">distance</span></tt>) entre votre position actuelle
et votre destination. Cela revient à considérer qu&#8217;on autorise des
déplacements horizontaux et verticaux d&#8217;une case, chacun coûtant un
point de déplacement.</p>
<div class="section" id="turbo">
<h4>Turbo<a class="headerlink" href="#turbo" title="Lien permanent vers ce titre">¶</a></h4>
<p>Le turbo vous permet de dépenser <tt class="docutils literal"><span class="pre">COUT_TURBO</span></tt> points d&#8217;action pour
gagner un point de déplacement. La réciproque, à savoir convertir des
points de déplacement en points d&#8217;action, est impossible.</p>
</div>
</div>
<div class="section" id="actions-sur-des-portails">
<h3>Actions sur des portails<a class="headerlink" href="#actions-sur-des-portails" title="Lien permanent vers ce titre">¶</a></h3>
<p>En règle générale, <em>pour toute action liée à un portail, votre agent
doit se trouver sur la case du portail</em>. La création de lien est un
cas particulier puisqu&#8217;elle fait intervenir deux portails.</p>
<div class="section" id="capturer-un-portail">
<h4>Capturer un portail<a class="headerlink" href="#capturer-un-portail" title="Lien permanent vers ce titre">¶</a></h4>
<p>Vous pouvez dépenser <tt class="docutils literal"><span class="pre">COUT_CAPTURE</span></tt> points d&#8217;action pour capturer un
portail <em>neutre</em>.</p>
</div>
<div class="section" id="relier-deux-portails">
<h4>Relier deux portails<a class="headerlink" href="#relier-deux-portails" title="Lien permanent vers ce titre">¶</a></h4>
<p>Vous pouvez dépenser <tt class="docutils literal"><span class="pre">COUT_LIEN</span></tt> points d&#8217;action pour relier le
portail où votre agent se trouve à un autre quelconque si :</p>
<ul class="simple">
<li>vous possédez les deux portails ;</li>
<li>le lien n&#8217;interférerait avec aucun autre lien existant ;</li>
<li>aucun des deux portails ne se trouve à l&#8217;intérieur d&#8217;un champ
existant.</li>
</ul>
</div>
<div class="section" id="neutraliser-un-portail">
<h4>Neutraliser un portail<a class="headerlink" href="#neutraliser-un-portail" title="Lien permanent vers ce titre">¶</a></h4>
<p>Vous pouvez dépenser <tt class="docutils literal"><span class="pre">COUT_NEUTRALISATION</span></tt> points d&#8217;action pour
neutraliser un portail qui appartient à l&#8217;adversaire, celui-ci devient
alors neutre. Si des boucliers (cf. « Ajouter un bouclier ») sont
présents sur le portail, un coût supplémentaire de <tt class="docutils literal"><span class="pre">nombre</span> <span class="pre">de</span>
<span class="pre">boucliers</span> <span class="pre">×</span> <span class="pre">COUT_NEUTRALISATION_BOUCLIER</span></tt> vient s&#8217;ajouter au coût de
base.</p>
<p>La neutralisation d&#8217;un portail lui fait perdre tous ses boucliers et
détruit tous les liens reliés à ce portail, et donc également tous les
triangles incidents à ce portail. Il <em>n&#8217;est pas possible</em> de payer
partiellement pour détruire des boucliers sans entièrement neutraliser
le portail.</p>
</div>
<div class="section" id="ajouter-un-bouclier">
<h4>Ajouter un bouclier<a class="headerlink" href="#ajouter-un-bouclier" title="Lien permanent vers ce titre">¶</a></h4>
<p>Vous pouvez rajouter un bouclier sur un portail que vous contrôlez ;
cette action coûte <tt class="docutils literal"><span class="pre">COUT_BOUCLIER</span></tt> pour un portail sans bouclier, et
chaque bouclier présent fait monter le coût de 1 point d&#8217;action.</p>
<p>Les boucliers sur un portail sont conservés d&#8217;un tour à l&#8217;autre. Les
boucliers disparaissent quand le portail sur lequel ils sont posés est
détruit.</p>
<p>Le nombre de boucliers que l&#8217;on peut mettre sur un même portail est
borné par <tt class="docutils literal"><span class="pre">MAX_BOUCLIERS</span></tt>. Ceci garantit qu&#8217;un portail restera
toujours neutralisable avec les points d&#8217;action dont on dispose dans
un tour.</p>
</div>
</div>
</div>
<div class="section" id="score">
<h2>Score<a class="headerlink" href="#score" title="Lien permanent vers ce titre">¶</a></h2>
<p>Le score des deux agents est initialisé à zéro en début de partie et
ne peut qu&#8217;augmenter au cours de la partie. Pour cela, vous pouvez :</p>
<ul class="simple">
<li>capturer des portails, ce qui incrémente de
<tt class="docutils literal"><span class="pre">POINTS_CREATION_PORTAIL</span></tt> votre score ;</li>
<li>posséder des champs : à la fin de chacun de vos tours, chaque champ
que vous contrôlez à ce moment vous rapporte un nombre de points
proportionnel à l&#8217;aire qu&#8217;il recouvre (<tt class="docutils literal"><span class="pre">POINTS_CHAMP</span></tt> points par
unité d&#8217;aire).</li>
</ul>
<div class="section" id="format-de-la-carte">
<h3>Format de la carte<a class="headerlink" href="#format-de-la-carte" title="Lien permanent vers ce titre">¶</a></h3>
<p>La carte est représentée sous la forme d&#8217;un fichier texte où <tt class="docutils literal"><span class="pre">X</span></tt>
désigne l&#8217;emplacement d&#8217;un portail et <tt class="docutils literal"><span class="pre">.</span></tt> une case sans portail.</p>
<p>Le fichier doit suivre le format suivant :</p>
<div class="highlight-python"><div class="highlight"><pre>depart_joueur1.x depart_joueur1.y
depart_joueur2.x depart_joueur2.y
ASCII map representation
</pre></div>
</div>
<p>Voici un exemple :</p>
<div class="highlight-python"><div class="highlight"><pre>14 14
15 15
..............................
..........X........X..........
....X.................X.......
.X................X...........
.........X................X...
.............X..........X.....
...X.......................X..
........X...........X.........
...........X.....X............
.....X.................X......
..X..................X........
......X.....................X.
............X...X.............
.......X.................X....
..............................
..............................
....X.................X.......
.............X...X............
.X.....................X......
........X..................X..
......X.................X.....
............X.....X...........
.........X...........X........
..X.......................X...
.....X..........X.............
...X................X.........
...........X................X.
.......X.................X....
..........X........X..........
..............................
</pre></div>
</div>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table des Matières</a></h3>
  <ul>
<li><a class="reference internal" href="#">Prologin 2015 : Briefing détaillé</a><ul>
<li><a class="reference internal" href="#synthese-executive">Synthèse exécutive</a></li>
<li><a class="reference internal" href="#etat-de-la-simulation">État de la simulation</a><ul>
<li><a class="reference internal" href="#carte">Carte</a></li>
<li><a class="reference internal" href="#portails-liens-et-champs">Portails, liens et champs</a></li>
<li><a class="reference internal" href="#agent">Agent</a></li>
</ul>
</li>
<li><a class="reference internal" href="#deroulement-d-un-tour">Déroulement d&#8217;un tour</a><ul>
<li><a class="reference internal" href="#deplacement">Déplacement</a><ul>
<li><a class="reference internal" href="#turbo">Turbo</a></li>
</ul>
</li>
<li><a class="reference internal" href="#actions-sur-des-portails">Actions sur des portails</a><ul>
<li><a class="reference internal" href="#capturer-un-portail">Capturer un portail</a></li>
<li><a class="reference internal" href="#relier-deux-portails">Relier deux portails</a></li>
<li><a class="reference internal" href="#neutraliser-un-portail">Neutraliser un portail</a></li>
<li><a class="reference internal" href="#ajouter-un-bouclier">Ajouter un bouclier</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#score">Score</a><ul>
<li><a class="reference internal" href="#format-de-la-carte">Format de la carte</a></li>
</ul>
</li>
</ul>
</li>
</ul>

  <h4>Sujet précédent</h4>
  <p class="topless"><a href="index.html"
                        title="Chapitre précédent">Prologin Serveur 2015</a></p>
  <h4>Sujet suivant</h4>
  <p class="topless"><a href="faq-candidat.html"
                        title="Chapitre suivant">Finale Prologin 2015 - FAQ</a></p>
  <h3>Cette page</h3>
  <ul class="this-page-menu">
    <li><a href="_sources/finale.txt"
           rel="nofollow">Montrer la source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Recherche rapide</h3>
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Saisissez un mot clef ou un nom de module, classe ou fonction.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="Index général"
             >index</a></li>
        <li class="right" >
          <a href="faq-candidat.html" title="Finale Prologin 2015 - FAQ"
             >suivant</a> |</li>
        <li class="right" >
          <a href="index.html" title="Prologin Serveur 2015"
             >précédent</a> |</li>
        <li><a href="index.html">Prologin Serveur 2015</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2015, Prologin.
      Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
    </div>
  </body>
</html>