diff --git a/ia04-mason-cours/src/tutorial/Tools.java b/ia04-mason-cours/src/tutorial/Tools.java
index c81a9ce8b83f29337a8cab4d4817648087e5220b..5c118f36eccd136e456fb6d3e3331df84f8bee4e 100644
--- a/ia04-mason-cours/src/tutorial/Tools.java
+++ b/ia04-mason-cours/src/tutorial/Tools.java
@@ -8,6 +8,7 @@ import tutorial.model.Planete;
 import tutorial.model.environnement.Ressource;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.Random;
 
 public class Tools {
@@ -83,7 +84,7 @@ public class Tools {
 
     /**
      * Calcule la distance entre deux cases sans compter
-     * les déplacements en diagonal
+     * les déplacements en diagonale
      * @param aX coordonnée X première case
      * @param aY coordonnée Y première case
      * @param bX coordonnée X deuxième case
@@ -91,6 +92,7 @@ public class Tools {
      * @return distance entre les deux cases
      */
     public static int distance(int aX, int aY, int bX, int bY) {
+        // TODO Changer ça, prendre en compte l'aspect toroïdal de la map !
         int dX = Math.abs(aX - bX);
         int dY = Math.abs(aY - bY);
         return dX + dY;
@@ -115,4 +117,5 @@ public class Tools {
         }
         return retour;
     }
+
 }
diff --git a/ia04-mason-cours/src/tutorial/model/Constants.java b/ia04-mason-cours/src/tutorial/model/Constants.java
index 3ca1161ee9740acc90acb8dd9357493a9ec77d59..f9f7f31e7503aa9d7c1ecd8876064b677c40ead4 100644
--- a/ia04-mason-cours/src/tutorial/model/Constants.java
+++ b/ia04-mason-cours/src/tutorial/model/Constants.java
@@ -45,6 +45,7 @@ public class Constants {
     public final static int ETAT_ARBRE = 3;
     public final static int NB_FRUITS_MIN = 2;
     public final static int NB_FRUITS_MAX = 4;
+    public final static int NUTRITION_FRUIT = 1;
 
     public final static int QUANTITE_EAU_MAX = 15;
     public final static int DURETE_MINERAI_MAX = 3;
diff --git a/ia04-mason-cours/src/tutorial/model/balise/Balise.java b/ia04-mason-cours/src/tutorial/model/balise/Balise.java
index 300a3a8419db04500d055153416756e5e4589511..61fb900e50ba24367bbc0a74a731f4135056b57a 100644
--- a/ia04-mason-cours/src/tutorial/model/balise/Balise.java
+++ b/ia04-mason-cours/src/tutorial/model/balise/Balise.java
@@ -4,6 +4,7 @@ import sim.engine.SimState;
 import sim.engine.Steppable;
 import sim.engine.Stoppable;
 import tutorial.model.Constants;
+import tutorial.model.Planete;
 
 /**
  * Une balise se comporte comme une trace.
@@ -16,13 +17,16 @@ public class Balise implements Steppable {
 
     public Balise(TypeBalise t) {
         this.type = t;
-        this.intensite = Constants.BALISE_INTENSITE_MAX;
+        this.intensite = Constants.BALISE_INTENSITE_MAX; // TODO Plus une planète est grande, plus les balises restent longtemps
     }
 
     @Override
     public void step(SimState simState) {
+        Planete p = (Planete)simState;
         this.intensite -= 1;
         if(this.intensite <= 0) {
+            System.out.println("KILL");
+            p.yard.remove(this);
             this.stoppable.stop();
         }
     }
@@ -30,4 +34,10 @@ public class Balise implements Steppable {
     public TypeBalise getType() {
         return type;
     }
+
+    @Override
+    public String toString() {
+        return "[" + this.getClass().getSimpleName() + "] "
+                + "t=" + this.intensite;
+    }
 }
diff --git a/ia04-mason-cours/src/tutorial/model/crocosmaute/Crocosmaute.java b/ia04-mason-cours/src/tutorial/model/crocosmaute/Crocosmaute.java
index 16db238c6c2c9e2b7f7e39ccee91a81e5c9083f7..c05a296f04041527d0da2b07c3390e87514be66b 100644
--- a/ia04-mason-cours/src/tutorial/model/crocosmaute/Crocosmaute.java
+++ b/ia04-mason-cours/src/tutorial/model/crocosmaute/Crocosmaute.java
@@ -285,7 +285,7 @@ public abstract class Crocosmaute implements Steppable {
      */
     private void manger() {
         this.chargeFruits -= 1;
-        this.faim += 1;
+        this.faim += Constants.NUTRITION_FRUIT;
         if(this.faim > Constants.SATIETE) {
             this.faim = Constants.SATIETE;
         }
diff --git a/ia04-mason-cours/src/tutorial/model/crocosmaute/Eclaireur.java b/ia04-mason-cours/src/tutorial/model/crocosmaute/Eclaireur.java
index ef2efe3d245c23fc96bd31eb5aaf54d8194063da..27638326e8832ab399ededb73be41800e24d5ab3 100644
--- a/ia04-mason-cours/src/tutorial/model/crocosmaute/Eclaireur.java
+++ b/ia04-mason-cours/src/tutorial/model/crocosmaute/Eclaireur.java
@@ -1,8 +1,17 @@
 package tutorial.model.crocosmaute;
 
+import sim.engine.Stoppable;
+import sim.util.Bag;
+import tutorial.Tools;
+import tutorial.model.Location;
+import tutorial.model.alien.Alien;
 import tutorial.model.balise.Balise;
 import tutorial.model.Planete;
 import tutorial.model.balise.TypeBalise;
+import tutorial.model.environnement.Eau;
+import tutorial.model.environnement.Minerai;
+
+import java.util.ArrayList;
 
 public class Eclaireur extends Crocosmaute {
     private TypeBalise balise;
@@ -14,14 +23,35 @@ public class Eclaireur extends Crocosmaute {
         balise = null;
     }
 
-
-    /**
-     * Si il est à la fusée, il se déplace aléatoirement
-     * @param p planète
-     */
     @Override
     protected void strategie(Planete p) {
-        if(this.x == p.getPosVaisseau().getX() && this.y == p.getPosVaisseau().getY())
+        Bag b = p.getYard().getObjectsAtLocation(this.x,this.y);
+        boolean alien = false;
+        boolean eau = false;
+        boolean minerai = false;
+        if(b != null)
+        {
+            for (Object o : b) {
+                if(o instanceof Alien)
+                {
+                    alien = true;
+                }
+                else if(o instanceof Eau)
+                {
+                    eau = true;
+                }
+                else if(o instanceof Minerai)
+                {
+                    minerai = true;
+                }
+            }
+        }
+        /* Si on se trouve sur un alien, l'attaquer */
+        if(alien)
+        {
+            //this.attaquer(p); TODO
+        }
+        else if(this.x == p.getPosVaisseau().getX() && this.y == p.getPosVaisseau().getY())
         {
             this.setRetourFusee(false);
             this.moveInRandomDirection(p);
@@ -34,21 +64,62 @@ public class Eclaireur extends Crocosmaute {
                 this.avancerDeUnPasVers(p, p.getVaisseau().getX(),p.getVaisseau().getY());
             }
         }
+        /* Si on se trouve sur du minerai, activer le retour fusée,
+           changer le type de balise et commencer à revenir à la fusée
+         */
+        else if(minerai)
+        {
+            this.setRetourFusee(true);
+            this.setBalise(TypeBalise.MINERAI);
+            this.poserBalise(this.getBalise(),p);
+            this.avancerDeUnPasVers(p,p.getVaisseau().getX(),p.getVaisseau().getY());
+        }
+        /* Si on se trouve sur de l'eau, activer le retour fusée,
+           changer le type de balise et commencer à revenir à la fusée
+         */
+        else if(eau)
+        {
+            this.setRetourFusee(true);
+            this.setBalise(TypeBalise.EAU);
+            this.poserBalise(this.getBalise(),p);
+            this.avancerDeUnPasVers(p,p.getVaisseau().getX(),p.getVaisseau().getY());
+        }
         else
         {
-            moveInRandomDirection(p); // TODO KOMALIS
+            ArrayList<Location> mineraiEnVue = this.ressourceEnVue(p, Minerai.class);
+            ArrayList<Location> eauEnVue = this.ressourceEnVue(p, Eau.class);
+            /* Si du minerai est en vue, y aller */
+            if(!mineraiEnVue.isEmpty())
+            {
+                Location there = Tools.plusProche(new Location(this.x,this.y),mineraiEnVue);
+                this.avancerVers(p,there.getX(),there.getY());
+            }
+            /* Si de l'eau est en vue, y aller */
+            else if(!eauEnVue.isEmpty())
+            {
+                Location there = Tools.plusProche(new Location(this.x,this.y),eauEnVue);
+                this.avancerVers(p,there.getX(),there.getY());
+            }
+            /* When all else fails */
+            else
+            {
+                moveInRandomDirection(p);
+            }
         }
 
+
     }
 
     /**
      * Pose une balise à l'emplacement du crocosmaute
      * @param t type de la balise posée
-     * @param planete
+     * @param p planète
      */
-    public void poserBalise(TypeBalise t, Planete planete) {
+    public void poserBalise(TypeBalise t, Planete p) {
         Balise b = new Balise(t);
-        planete.yard.setObjectLocation(b,this.x,this.y);
+        p.getYard().setObjectLocation(b,this.x,this.y);
+        Stoppable stoppable = p.schedule.scheduleRepeating(b);
+        b.stoppable = stoppable;
     }
 
     public TypeBalise getBalise() {
diff --git a/ia04-mason-cours/src/tutorial/model/crocosmaute/Jardinier.java b/ia04-mason-cours/src/tutorial/model/crocosmaute/Jardinier.java
index 02a9ae763a80f1308be5c051662a215725ebaa62..b612987acf0a3ba303239a65668a6187545cbc51 100644
--- a/ia04-mason-cours/src/tutorial/model/crocosmaute/Jardinier.java
+++ b/ia04-mason-cours/src/tutorial/model/crocosmaute/Jardinier.java
@@ -122,9 +122,9 @@ public class Jardinier extends Crocosmaute {
                 else if(!balisesEnVue.isEmpty())
                 {
                     //System.out.println("[Gardener] Water flag in sight !");
-
+                    // TODO aller vers la balise à la plus faible trace
                     Location here = new Location(this.x,this.y);
-                    Location there = Tools.plusProche(here,eauEnVue);
+                    Location there = Tools.plusProche(here,balisesEnVue);
                     this.avancerVers(p,there.getX(),there.getY());
                 }
                 else
@@ -168,7 +168,7 @@ public class Jardinier extends Crocosmaute {
             /* Si un arbre fruitier ou un fruit non arrosé est à proximité, s'y rendre */
             if(!fruitsEnVue.isEmpty())
             {
-                //System.out.println("[Gardener] Fruits in sight");
+                //System.out.println("[Gardener] Fruit in sight");
 
                 Location loc = Tools.plusProche(new Location(this.x,this.y), fruitsEnVue);
                 this.avancerVers(p, loc.getX(), loc.getY());
diff --git a/ia04-mason-cours/src/tutorial/model/crocosmaute/Mineur.java b/ia04-mason-cours/src/tutorial/model/crocosmaute/Mineur.java
index 9f6fa714667d8d0a03126cbb87788e0eed955e95..ad8b9b176e005a96167beb7b5074651f99a546c9 100644
--- a/ia04-mason-cours/src/tutorial/model/crocosmaute/Mineur.java
+++ b/ia04-mason-cours/src/tutorial/model/crocosmaute/Mineur.java
@@ -71,6 +71,7 @@ public class Mineur extends Crocosmaute {
             /* Si une balise minerai est à proximité, s'y rendre */
             else if(!balisesEnVue.isEmpty())
             {
+                // TODO aller vers la balise à la plus faible trace
                 Location loc = balisesEnVue.get(0);
                 this.avancerVers(p, loc.getX(), loc.getY());
             }
diff --git a/ia04-mason-cours/src/tutorial/model/environnement/Fruit.java b/ia04-mason-cours/src/tutorial/model/environnement/Fruit.java
index 23b6f20a69fcd6b7300e3b80720d8ae212dcfb00..d7370583856445f6a362f8f54eebe9944fc356e4 100644
--- a/ia04-mason-cours/src/tutorial/model/environnement/Fruit.java
+++ b/ia04-mason-cours/src/tutorial/model/environnement/Fruit.java
@@ -33,8 +33,8 @@ public class Fruit extends Ressource {
         }
         else
         {
-            /**
-             * Machine à états correspondant à la croissance de la plante
+            /*
+              Machine à états correspondant à la croissance de la plante
              */
             switch (this.clock)
             {