diff --git a/android/assets/level_001.txt b/android/assets/level_001.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5b22a2a8e78cf859ad4d487f61af67a1e1f653cb
--- /dev/null
+++ b/android/assets/level_001.txt
@@ -0,0 +1,14 @@
+16 12 60
+VV121VVVVVV1VVVV
+VVVVVVVVVVVVVVVZ
+VJLVVV1VVVVJL1VD
+VVVVVVVVJLVVV1VD
+VVVVJLVVVVVVV1VD
+ZVVVVVVVVVVVVVVD
+JKKLVVVVVJKLVVVD
+VVVVVVVVVVVVVV2D
+CVVVJKLVVVVVVVAB
+FPVVVVVVVV1VVVDE
+BBBCVVVVABCVVVDE
+EEEFWWWWDEFWWWDE
+Back.png
diff --git a/assets/level_001.txt b/assets/level_001.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5b22a2a8e78cf859ad4d487f61af67a1e1f653cb
--- /dev/null
+++ b/assets/level_001.txt
@@ -0,0 +1,14 @@
+16 12 60
+VV121VVVVVV1VVVV
+VVVVVVVVVVVVVVVZ
+VJLVVV1VVVVJL1VD
+VVVVVVVVJLVVV1VD
+VVVVJLVVVVVVV1VD
+ZVVVVVVVVVVVVVVD
+JKKLVVVVVJKLVVVD
+VVVVVVVVVVVVVV2D
+CVVVJKLVVVVVVVAB
+FPVVVVVVVV1VVVDE
+BBBCVVVVABCVVVDE
+EEEFWWWWDEFWWWDE
+Back.png
diff --git a/core/src/body/Joyau.java b/core/src/body/Joyau.java
new file mode 100644
index 0000000000000000000000000000000000000000..c6e9bb705aefdf5f489f1eac5f56b39ae634a8b4
--- /dev/null
+++ b/core/src/body/Joyau.java
@@ -0,0 +1,4 @@
+package body;
+
+public class Joyau {
+}
diff --git a/core/src/body/Panneau.java b/core/src/body/Panneau.java
new file mode 100644
index 0000000000000000000000000000000000000000..e9d8337c9a5867850ed7666e59fbe3f51704ccbf
--- /dev/null
+++ b/core/src/body/Panneau.java
@@ -0,0 +1,4 @@
+package body;
+
+public class Panneau {
+}
diff --git a/core/src/body/Platform.java b/core/src/body/Platform.java
new file mode 100644
index 0000000000000000000000000000000000000000..585d301c877efde13bb5f16ed71ec7719dcfeb78
--- /dev/null
+++ b/core/src/body/Platform.java
@@ -0,0 +1,57 @@
+package body;
+
+import com.badlogic.gdx.math.Vector2;
+import com.badlogic.gdx.physics.box2d.Body;
+import com.badlogic.gdx.physics.box2d.BodyDef;
+import com.badlogic.gdx.physics.box2d.FixtureDef;
+import com.badlogic.gdx.physics.box2d.PolygonShape;
+import com.badlogic.gdx.physics.box2d.World;
+
+public class Platform {
+        PolygonShape shapeStruct;
+        Vector2[] ptsStruct;
+        public Platform(int x, int y, String type, World world){
+            BodyDef bodyDef = new BodyDef();
+            bodyDef.type = BodyDef.BodyType.StaticBody;
+            bodyDef.position.set(x, y);
+
+            Body structBody = world.createBody(bodyDef);
+
+            FixtureDef fixtureDefStruct = new FixtureDef();
+            shapeStruct = new PolygonShape();
+
+
+            if (type.equals("rectangle")) {
+                ptsStruct = new Vector2[]{};
+
+                shapeStruct.set(ptsStruct);
+            }
+
+            if (type.equals("carre")){
+                ptsStruct = new Vector2[]{};
+                shapeStruct.set(ptsStruct);
+            }
+
+            if (type.equals("bord_gauche")){
+                ptsStruct = new Vector2[]{};
+                shapeStruct.set(ptsStruct);
+            }
+
+            if (type.equals("bord_droit")){
+                ptsStruct = new Vector2[]{};
+                shapeStruct.set(ptsStruct);
+            }
+
+            fixtureDefStruct.shape = shapeStruct;
+            fixtureDefStruct.restitution = 0.6f;
+            fixtureDefStruct.density = 1f;
+            fixtureDefStruct.friction = 0.25f;
+
+
+            structBody.createFixture(fixtureDefStruct).setUserData("platform");
+            shapeStruct.dispose();
+
+        }
+}
+
+
diff --git a/core/src/body/Water.java b/core/src/body/Water.java
new file mode 100644
index 0000000000000000000000000000000000000000..c7fa14912892520a7f7eda370202304bb6009646
--- /dev/null
+++ b/core/src/body/Water.java
@@ -0,0 +1,37 @@
+package body;
+
+import com.badlogic.gdx.math.Vector2;
+import com.badlogic.gdx.physics.box2d.Body;
+import com.badlogic.gdx.physics.box2d.BodyDef;
+import com.badlogic.gdx.physics.box2d.FixtureDef;
+import com.badlogic.gdx.physics.box2d.PolygonShape;
+import com.badlogic.gdx.physics.box2d.World;
+
+public class Water {
+
+    PolygonShape shapeStruct;
+    Vector2[] ptsStruct;
+
+    public Water(int x, int y, World world){
+
+        BodyDef bodyDef = new BodyDef();
+        bodyDef.type = BodyDef.BodyType.StaticBody;
+        bodyDef.position.set(x, y);
+
+        Body structBody = world.createBody(bodyDef);
+
+        FixtureDef fixtureDefStruct = new FixtureDef();
+        shapeStruct = new PolygonShape();
+
+        ptsStruct = new Vector2[]{};
+        shapeStruct.set(ptsStruct);
+
+        fixtureDefStruct.shape = shapeStruct;
+        fixtureDefStruct.isSensor = true; //traversable
+
+
+        structBody.createFixture(fixtureDefStruct);
+        shapeStruct.dispose();
+    }
+}
+
diff --git a/core/src/etat/Play.java b/core/src/etat/Play.java
index 2508bd8cfe62608949ef9d56ae9de1f4a1c3c279..0f40fa5c393f746e119a257fe288b80b8fad796f 100644
--- a/core/src/etat/Play.java
+++ b/core/src/etat/Play.java
@@ -2,10 +2,12 @@ package etat;
 
 import static handlers.B2DVars.PPM;
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.files.FileHandle;
 import com.badlogic.gdx.graphics.GL20;
 import com.badlogic.gdx.graphics.OrthographicCamera;
 import com.badlogic.gdx.graphics.g2d.BitmapFont;
 import com.badlogic.gdx.math.Vector2;
+import com.badlogic.gdx.math.Vector3;
 import com.badlogic.gdx.physics.box2d.Body;
 import com.badlogic.gdx.physics.box2d.BodyDef;
 import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
@@ -14,6 +16,8 @@ import com.badlogic.gdx.physics.box2d.PolygonShape;
 import com.badlogic.gdx.physics.box2d.World;
 import com.mygdx.game.PlatVenture;
 
+import body.Platform;
+import body.Water;
 import handlers.ContactListenerPerso;
 import handlers.GameStateManager;
 
@@ -21,6 +25,9 @@ public class Play extends GameState {
 
     private World world;
     private Box2DDebugRenderer b2dr;
+    private int largeur;
+    private int hauteur;
+    private int temps;
 
     private OrthographicCamera b2dCam;
 
@@ -31,16 +38,17 @@ public class Play extends GameState {
         b2dr = new Box2DDebugRenderer();
 
         BodyDef bdef = new BodyDef();
-        bdef.position.set(80/PPM, 60/PPM);
+        bdef.position.set(55/PPM, 6/PPM);
         bdef.type = BodyDef.BodyType.StaticBody;
         Body body = world.createBody(bdef);
 
+        Vector2[] pts = new Vector2[]{new Vector2(20/PPM, 65/PPM), new Vector2(30/PPM, 65/PPM), new Vector2(30/PPM, 55/PPM), new Vector2(20/PPM, 55/PPM)};
         PolygonShape shape = new PolygonShape();
-        shape.setAsBox(50/PPM, 5/PPM);
+        shape.set(pts);
 
         FixtureDef fdef = new FixtureDef();
         fdef.shape = shape;
-        body.createFixture(fdef);
+        body.createFixture(fdef).setUserData("platform");
 
 
         bdef.position.set(80/PPM, 100/PPM);
@@ -51,7 +59,9 @@ public class Play extends GameState {
 
         fdef = new FixtureDef();
         fdef.shape = shape;
-        body.createFixture(fdef);
+        body.createFixture(fdef).setUserData("perso");
+
+        createWorld("assets/level_001.txt");
 
         //Init b2dCam
         b2dCam = new OrthographicCamera();
@@ -66,6 +76,7 @@ public class Play extends GameState {
     public void update(float dt) {
         //dt => delta time
 
+        handleInput();
         /*TODO remettre à 1 quand j'aurai bien compris, on a pas besoin d'autant de précisions
          */
         world.step(dt, 6, 2);
@@ -83,5 +94,58 @@ public class Play extends GameState {
     @Override
     public void dispose() {
 
+    }
+
+    private void createWorld(String path){
+        FileHandle handle = Gdx.files.local(path);
+        String text = handle.readString();
+        String[] ligne = text.split("\\r?\\n");
+        String[] premiereLigne = ligne[0].split(" ");
+        largeur = Integer.parseInt(premiereLigne[0]);
+        hauteur = Integer.parseInt(premiereLigne[1]);
+        temps = Integer.parseInt(premiereLigne[2]);
+
+        for (int i = 1; i < hauteur+1; i++){
+            for (int j = 0; j < largeur; j++){
+                char current = ligne[i].charAt(j);
+                System.out.print(current);
+                /*switch (current){
+                    case 'J':
+                        new Platform(j, i, "bord_gauche", world);
+                        break;
+                    case 'K':
+                        new Platform(j, i, "rectangle", world);
+                        break;
+                    case 'L':
+                        new Platform(j, i, "bord_droit", world);
+                        break;
+                    case 'A':
+                    case 'B':
+                    case 'C':
+                    case 'D':
+                    case 'E':
+                    case 'F':
+                    case 'G':
+                    case 'H':
+                    case 'I':
+                        new Platform(j, i, "carre", world);
+                        break;
+                    case 'W':
+                        new Water(j, i, world);
+                        break;
+                    case 'Z':
+                        //new Panneau(j, i, FabriqueUnite.getUnite(), world);
+                        break;
+                    case '1':
+                    case '2':
+                        //new Joyau(j, i, FabriqueUnite.getUnite(), world);
+                        break;
+
+                }*/
+            }
+            System.out.println();
+        }
+
+
     }
 }
diff --git a/core/src/handlers/B2DVars.java b/core/src/handlers/B2DVars.java
index 6a205a76c45c92877509fd763580502193f4b28c..d98e8ee78db86a232fe65893b5dc154241b793df 100644
--- a/core/src/handlers/B2DVars.java
+++ b/core/src/handlers/B2DVars.java
@@ -3,4 +3,5 @@ package handlers;
 public class B2DVars {
 
     public static final float PPM = 100;
+    public static final float originY = 60;
 }