public class Prologin extends Interface
{
  // Fonction appelée au début de la partie.
  public void partie_init()
  {
	  //Interface.moi();
	  System.out.println("Player "+API.moi()+": Begin");
	  API.init();
  }

  
  public void printMap()
  {
	  Position p = new Position();
	  System.out.println("Printing");
	  for(int y = 0 ; y < 39 ; y++)
	  {
		  for(int x = 0 ; x < 39 ; x++)
		  {
			  p.x = x;
			  p.y = y;
			  System.err.print(" "+(API.est_libre(p)?1:0));
		  }
		  System.err.println();
	  }
  }

  public Position position(int x, int y)
  {
	  Position p = new Position();
	  p.x = x;
	  p.y = y;
	  return p;
  }
  
  public void aspirationThing()
  {
	  int max = -1;
	  Position maxP = null;
	  for(Position p : API.ma_base())
	  {
		  if(p.y == 18 || p.y == 19 || p.y == 20)
			  continue;
		  if(API.puissance_aspiration(p) >= max)
		  {
			  max = API.puissance_aspiration(p);
			  maxP = p;
		  }
	  }
	  Position dest = position(0, 19);
	  if(API.puissance_aspiration(dest) == API.LIMITE_ASPIRATION)
		  dest.y += 1;
	  if(API.puissance_aspiration(dest) == API.LIMITE_ASPIRATION)
	  {
		  dest.y -= 1;
		  dest.x = 38;
	  }
	  if(API.puissance_aspiration(dest) == API.LIMITE_ASPIRATION)
	  {
		  dest.y += 1;
	  }
	  if(API.puissance_aspiration(dest) != API.LIMITE_ASPIRATION)
	  {
		  API.deplacer_aspiration(maxP, dest);
	  }
  }
  
  public int mainPipeBuild()
  {
	  int action = 5;
	  Position p = new Position();
	  loop1:
	  for(int x = 1 ; x < 40 ; x++)
	  {
		  for(int y = 19 ; y < 21 ; y++)
		  {
			  p.x = x;
			  p.y = y;
			  if(API.est_debris(p))
			  {
				  API.deblayer(p);
				  API.construire(p);
				  action -= 3;
				  break loop1;
			  }
		  }
	  }
	  loop:
	  for(int x = 1 ; x < 40 ; x++)
	  {
		  for(int y = 19 ; y < 21 ; y++)
		  {
			  p.x = x;
			  p.y = y;
			  if(API.est_libre(p))
			  {
				  API.construire(p);
				  action -= 1;
			  }
			  if(action == 0)
				  break loop;
		  }
	  }
	  return action;
  }
  
  // Fonction appelée à chaque tour.
  public void jouer_tour()
  {
	  if(API.tour_actuel() == 100)
	  {
		  printMap();
	  }
	  aspirationThing();
	  int actionLeft = mainPipeBuild();
	  int min = -1;
	  for(Position p : Interface.liste_pulsars())
	  {
		  int distance;
		  if(p.x > 20)
		  {
			  distance = Math.abs(p.y-19)+40-p.x;
		  }
		  else
		  {
			  distance = Math.abs(p.y-19)+p.x;
		  }
		  if(min == -1 || distance < min)
	  }
  }


  // Fonction appelée à la fin de la partie.
  public void partie_fin()
  {
    // Place ton code ici
  }
}
