diff --git a/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java b/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java
index cafdad0290c2d8a36fc7f34cd812577e34123c2d..68522a58304504de07a30ad9990a9ac258ed5cb8 100644
--- a/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java
+++ b/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java
@@ -168,44 +168,64 @@ public class CreationOuvertureActivity extends AppCompatActivity{
         imageViewDepart.setOnTouchListener(new View.OnTouchListener() {
             @Override
             public boolean onTouch(View v, MotionEvent event) {
-                if (event.getPointerCount() == 2) {
-                    float x1, x2, y1, y2;
-                    x1 = event.getX(0);
-                    y1 = event.getY(0);
-                    x2 = event.getX(1);
-                    y2 = event.getY(1);
-                    Log.i("SelectActivity", "################################################# Coords : " + x1 + " | " + y1 + "  &  " + x2 + " | " + y2);
-
-                    rectDepart = new Rect((int) x1, (int) y1, (int) x2, (int) y2);
-                    rectDepart.sort();
-
-                    try {
-                        canvasDepart = surfaceViewDepart.getHolder().lockCanvas();
-                        synchronized (surfaceViewDepart.getHolder()) {
-                            canvasDepart.drawColor(0, PorterDuff.Mode.CLEAR);
-                            canvasDepart.drawRect(rectDepart, myPaint);
+                if (pieceEnCours != null) {
+                    if (event.getPointerCount() == 2) {
+                        float x1, x2, y1, y2;
+                        x1 = event.getX(0);
+                        y1 = event.getY(0);
+                        x2 = event.getX(1);
+                        y2 = event.getY(1);
+                        Log.i("SelectActivity", "################################################# Coords : " + x1 + " | " + y1 + "  &  " + x2 + " | " + y2);
+
+                        if (pieceEnCours.equals(pieceDepart)) {
+                            rectDepart = new Rect((int) x1, (int) y1, (int) x2, (int) y2);
+                            rectDepart.sort();
+
+                            try {
+                                canvasDepart = surfaceViewDepart.getHolder().lockCanvas();
+                                synchronized (surfaceViewDepart.getHolder()) {
+                                    canvasDepart.drawColor(0, PorterDuff.Mode.CLEAR);
+                                    canvasDepart.drawRect(rectDepart, myPaint);
+                                }
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            } finally {
+                                if (canvasDepart != null) {
+                                    surfaceViewDepart.getHolder().unlockCanvasAndPost(canvasDepart);
+                                }
+                            }
+                        } else {
+                            rectArrivee = new Rect((int) x1, (int) y1, (int) x2, (int) y2);
+                            rectArrivee.sort();
+
+                            try {
+                                canvasDepart = surfaceViewDepart.getHolder().lockCanvas();
+                                synchronized (surfaceViewDepart.getHolder()) {
+                                    canvasDepart.drawColor(0, PorterDuff.Mode.CLEAR);
+                                    canvasDepart.drawRect(rectArrivee, myPaint);
+                                }
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            } finally {
+                                if (canvasDepart != null) {
+                                    surfaceViewDepart.getHolder().unlockCanvasAndPost(canvasDepart);
+                                }
+                            }
                         }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    } finally {
-                        if (canvasDepart != null) {
-                            surfaceViewDepart.getHolder().unlockCanvasAndPost(canvasDepart);
-                        }
-                    }
 
 
-                    //Log.i("SelectActivity", "################################################# Coords Rect : " + rect.left + " | " + rect.top + "  &  " + rect.right + " | " + rect.bottom);
+                        //Log.i("SelectActivity", "################################################# Coords Rect : " + rect.left + " | " + rect.top + "  &  " + rect.right + " | " + rect.bottom);
 
-                }
-                if (event.getAction() == MotionEvent.ACTION_UP) {
-                    if (rectDepart != null) {
-                        Log.i("Touchup", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ je releve mon doigt");
+                    }
+                    if (event.getAction() == MotionEvent.ACTION_UP) {
+                        if (rectDepart != null) {
+                            Log.i("Touchup", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ je releve mon doigt");
 
-                        //showImage();
+                            //showImage();
 
+                        }
                     }
                 }
-
                 return true;
             }
         });
diff --git a/app/src/main/java/habitat/Habitat.java b/app/src/main/java/habitat/Habitat.java
index 462c628d051e9dc7943145810568c53238a504c7..941ed4872c00ed53abeb40ca750619ed01e074a8 100644
--- a/app/src/main/java/habitat/Habitat.java
+++ b/app/src/main/java/habitat/Habitat.java
@@ -9,6 +9,7 @@ import outils.FabriqueId;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Objects;
 
 public class Habitat implements Parcelable {
 
@@ -109,4 +110,15 @@ public class Habitat implements Parcelable {
     public void reset(){
         pieces.clear();
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(pieces);
+    }
 }
diff --git a/app/src/main/java/habitat/Mur.java b/app/src/main/java/habitat/Mur.java
index c6efcfebdaff649c523f2ab8be752b60e74b1177..77b82692ed49d669d961053cb4bfab06aca80c0c 100644
--- a/app/src/main/java/habitat/Mur.java
+++ b/app/src/main/java/habitat/Mur.java
@@ -8,6 +8,8 @@ import org.json.JSONException;
 import org.json.JSONObject;
 import outils.FabriqueId;
 
+import java.util.Objects;
+
 public class Mur implements Parcelable {
 
     private Habitat habitat;
@@ -135,4 +137,16 @@ public class Mur implements Parcelable {
         }
         return jsonObject;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        return id == ((Mur) o).getId() && Objects.equals(habitat, ((Mur) o).getHabitat()) && Objects.equals(piece, ((Mur) o).getPiece()) && orientation == ((Mur) o).getOrientation();
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(habitat, piece, orientation, id);
+    }
 }
diff --git a/app/src/main/java/habitat/Piece.java b/app/src/main/java/habitat/Piece.java
index f91c90735dae5b280973cbd88d5ccce3c43b2bc1..1bb688380f8adf5189843ca14aaf2ae5cbbb830b 100644
--- a/app/src/main/java/habitat/Piece.java
+++ b/app/src/main/java/habitat/Piece.java
@@ -7,6 +7,7 @@ import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.util.ArrayList;
+import java.util.Objects;
 
 public class Piece implements Parcelable {
     private Habitat habitat;
@@ -142,4 +143,16 @@ public class Piece implements Parcelable {
         }
         return jsonObject;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        return Objects.equals(habitat, ((Piece) o).getHabitat()) && Objects.equals(nom, ((Piece) o).getNom()) && Objects.equals(murs, ((Piece) o).getMurs());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(habitat, nom, murs);
+    }
 }