diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java
index 0c7bec7a81be48a58ea6f4d535e715ab73987e7e..6d9d7a3bd43dbd9acf3a03896d9b45548fbd6ffa 100644
--- a/MAVENProject/src/main/java/entity/Character.java
+++ b/MAVENProject/src/main/java/entity/Character.java
@@ -16,7 +16,7 @@ public class Character extends Entity{
     private final double impulsionSaut;
     private double masse;
     private int alpha = 1; // gere les collisions avec le sol
-    
+    private int beta = 1; // gere les collisions avec les murs
     private final double entityWIDTH = 30; // pour l'instant je les ai renommes, ca peut changer
     private final double entityHEIGHT = 60;
     private Map<String,Double> tableCommande; //table des commandes du perso
@@ -46,7 +46,8 @@ public class Character extends Entity{
         //on se souvient de ses anciennes positions
         this.oldCoord = this.getCoord();
 
-        newX =  tableCommande.get("CommandX")*delta + this.getCoord().getX();
+        newX =  beta*tableCommande.get("CommandX")*delta + this.getCoord().getX();
+        //if (newX + Math.signum(tableCommande.get("CommandX")*entityWIDTH/2 ))
 
         
         newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ();
@@ -58,14 +59,14 @@ public class Character extends Entity{
         //(tableCommande.get("CommandZ") == 0) this.getCoord().getZ()(tableCommande.get("CommandZ") == 0) && 
 
         this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees
-        System.out.println("z = "+this.getCoord().getZ());
+ 
  
         //on actualise les vitesses
-        vitesseActuX = tableCommande.get("CommandX");
+        vitesseActuX = beta*tableCommande.get("CommandX");
 
         if (alpha == 1) vitesseActuZ = 0;
         /*else*/ vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta;
-        System.out.println("vitesse z = "+vitesseActuZ);
+
 
 
            
@@ -110,8 +111,24 @@ public class Character extends Entity{
 
     public void checkIfNextToWall(){
         if ((Obstacle.collisionDroite(this, Jeu.getObstacleTable()) && tableCommande.get("CommandX") == -vitesseMax) || (Obstacle.collisionGauche(this, Jeu.getObstacleTable()) && tableCommande.get("CommandX") == vitesseMax)){
-            this.setCoord(new Coordonnees(this.oldCoord.getX(), this.getCoord().getZ()));
+            beta = 0;
+        }else {
+            beta = 1;
+        }
+        if (obstacleNextTo != null){
+            if (tableCommande.get("CommandX") > 0){
+                if (this.getCoord().getX()+entityWIDTH/2 >= obstacleNextTo.getHitbox().getExtremites().get("HautGauche").getX()){
+                    this.setCoord(new Coordonnees(obstacleNextTo.getHitbox().getExtremites().get("HautGauche").getX()-entityWIDTH/2, this.getCoord().getZ()));
+                }
+            }
+            else if (tableCommande.get("CommandX") < 0){
+                if (this.getCoord().getX()-entityWIDTH/2 <= obstacleNextTo.getHitbox().getExtremites().get("HautDroite").getX()){
+                    this.setCoord(new Coordonnees(obstacleNextTo.getHitbox().getExtremites().get("HautDroite").getX()+entityWIDTH/2, this.getCoord().getZ()));
+                }
+            }
         }
+        
+
     }
 
     public void resetCommand(){
@@ -121,7 +138,7 @@ public class Character extends Entity{
     }
 
     public void evolveCharacter(){
-        System.out.println(alpha);
+        System.out.println(beta);
         getGameCommand();
         checkIfOnGround();
         //checkIfNextToWall();
diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java
index 4efaaa319c1d1719c99c132021396bbcadc68c1b..1b302bade5da3a510d215e0da56a8b048048f9fe 100644
--- a/MAVENProject/src/main/java/entity/Entity.java
+++ b/MAVENProject/src/main/java/entity/Entity.java
@@ -10,7 +10,7 @@ public abstract class Entity {
     protected Coordonnees oldCoord;
     final double vitesseMax;
     protected HitBox hitBox;
-
+    protected Obstacle obstacleNextTo = null;
     private final double entityWIDTH = 10;
     private final double entityHEIGHT = 10;
 
@@ -50,6 +50,12 @@ public abstract class Entity {
     public void setObstacleBeneath(Obstacle obstacleBeneath) {
         this.obstacleBeneath = obstacleBeneath;
     }
+    public Obstacle getObstacleNextTo() {
+        return obstacleNextTo;
+    }
+    public void setObstacleNextTo(Obstacle obstacleNextTo) {
+        this.obstacleNextTo = obstacleNextTo;
+    }
 
     
 }
diff --git a/MAVENProject/src/main/java/environnement/HitBox.java b/MAVENProject/src/main/java/environnement/HitBox.java
index 74aa6cac066a2a53e1f237dbc562d1615a01febd..cd30ac78f38672c2841c11829edb9f321d3a61ed 100644
--- a/MAVENProject/src/main/java/environnement/HitBox.java
+++ b/MAVENProject/src/main/java/environnement/HitBox.java
@@ -63,7 +63,7 @@ public class HitBox {
         return !(A.extremites.get("HautDroite").getX() < B.extremites.get("HautGauche").getX());// A est à gauche de B
     }
     public static Boolean collisionBas(HitBox A, HitBox B){
-        System.out.println(A.extremites.get("HautGauche").getZ()+"     "+B.extremites.get("BasGauche").getZ());
+        //System.out.println(A.extremites.get("HautGauche").getZ()+"     "+B.extremites.get("BasGauche").getZ());
         return !(A.extremites.get("HautGauche").getZ() > B.extremites.get("BasGauche").getZ());// A est en dessous de B
     }
     public static Boolean collisionHaut(HitBox A, HitBox B){
diff --git a/MAVENProject/src/main/java/map/Obstacle.java b/MAVENProject/src/main/java/map/Obstacle.java
index acd13a7869a34e53a105c5e57f3ac52fe9463ed3..8cc4e2067000cda771135d26830aa63b3364a357 100644
--- a/MAVENProject/src/main/java/map/Obstacle.java
+++ b/MAVENProject/src/main/java/map/Obstacle.java
@@ -53,17 +53,25 @@ public class Obstacle {
 
     public static Boolean collisionGauche(Entity charac,List<Obstacle> list){
         for (Obstacle obs : list){
-            if (HitBox.collisionGauche(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())) return true;
+            if (HitBox.collisionGauche(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())){
+                charac.setObstacleNextTo(obs);
+                return true;
+            }
 
         }
+        charac.setObstacleNextTo(null);
         return false;
     }
 
     public static Boolean collisionDroite(Entity charac,List<Obstacle> list){
         for (Obstacle obs : list){
-            if (HitBox.collisionDroite(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())) return true;
+            if (HitBox.collisionDroite(charac.getHitBox(), obs.getHitbox()) && obs != Jeu.getSol() && !HitBox.collisionHaut(obs.getHitbox(),charac.getHitBox())) {
+                charac.setObstacleNextTo(obs);
+                return true;
+            }
 
         }
+        charac.setObstacleNextTo(null);
         return false;
     }
 }