diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java
index 3300ffc1c466f918d94ae6990b0a50949d86672a..056aaec27416f08784d9791ee3a2d04e07330719 100644
--- a/MAVENProject/src/main/java/entity/Character.java
+++ b/MAVENProject/src/main/java/entity/Character.java
@@ -14,8 +14,10 @@ import environnement.PositionCollision;
 import jeu.Jeu;
 import map.Obstacle;
 import map.Coffre;
+import map.LevelManager;
 
 
+import static jeu.Jeu.getLevelmanager;
 import static jeu.Jeu.getObstacleTable;
 //import static jeu.Jeu.gameCharacter;
 
@@ -27,9 +29,9 @@ public class Character extends Entity{
     private final double impulsionSaut;
     private double masse;
     public int key;
-
     protected Map<String,Double> tableCommande; //table des commandes du perso
-
+    private boolean breakPorte=false;
+    private boolean brokenPorte=false;
     //private Obstacle obstacleBeneath = Jeu.sol;
 
     //private BufferedImage sprite;
@@ -143,17 +145,26 @@ public class Character extends Entity{
             }
         }    
     }
-    
+
+
+
     void keyGestion() {
     	for (Coffre cof : Jeu.getCoffreTable()){
             if (HitBox.collision(this.getHitBox(), cof.getHitbox())){
             	if (cof.key) {
             		this.key += 1;
             		cof.key = false;
+
             		System.out.print("Tu as trouvé une clée!");
             	}
             }
         }
+        if (key==3 && brokenPorte==false){
+            if (HitBox.collision(this.getHitBox(),Jeu.getObstacleTable().get(getLevelmanager().getIndexPorte()).getHitbox())) {
+                breakPorte = true;
+                brokenPorte = true;
+            }
+        }
     }    
 
     List<Obstacle> obstacleInVoisinage(){ //recupere la liste des obstacles presents dans le voisinage
@@ -204,6 +215,7 @@ public class Character extends Entity{
     }
 
     public void evolveCharacter(){
+        breakPorte=false;
         getGameCommand();
         deplacements();
         collisionGestion();
@@ -228,6 +240,9 @@ public class Character extends Entity{
     public double getVitesseActuZ() {
         return vitesseActuZ;
     }
+    public boolean isBreakPorte() {
+        return breakPorte;
+    }
 
     public double getM() {
         return masse;
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
index 2ff2e457c34eea79905869fbe6e2361726fb41da..061bded71044e485ed0b14dba401d932c56cbbd0 100644
--- a/MAVENProject/src/main/java/jeu/Jeu.java
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -65,11 +65,11 @@ public class Jeu implements Game{
 
     //Sol du niveau 1 :
 
-    public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1216),1,1000000));
+    //public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1216),1,1000000));
 
     //Sol du niveau 2 :
 
-    //public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1664),1,1000000));
+    public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1664),1,1000000));
 
     public static List<Obstacle> obstacleTable = new ArrayList<>();
     private static List<Monster> monsterList = new ArrayList<>();
@@ -80,11 +80,11 @@ public class Jeu implements Game{
     public final static float SCALE=1.0f;
     //Taille fenêtre niveau 1 :
 
-    public final static int TILES_IN_WIDTH = 132;
-    public final static int TILES_IN_HEIGHT = 46;
+    //public final static int TILES_IN_WIDTH = 132;
+    //public final static int TILES_IN_HEIGHT = 46;
     //Taille fenêtre niveau 2 :
-    //public final static int TILES_IN_WIDTH = 152;
-    //public final static int TILES_IN_HEIGHT = 60;
+    public final static int TILES_IN_WIDTH = 152;
+    public final static int TILES_IN_HEIGHT = 60;
 
     public final static int TILES_SIZE = (int) (TILES_DEFAULT_SIZE*SCALE);
     private static final LevelManager levelManager = new LevelManager();
@@ -194,10 +194,23 @@ public class Jeu implements Game{
 
 
        
-        //perso evolue dans le jeu (en actualisant ses coordonnees)
-        gameCharacter.evolveCharacter();
+
         //monstres evoluent dans le jeu
         Monster.evolveAllMonsters(monsterList);
+        //perso evolue dans le jeu (en actualisant ses coordonnees)
+        gameCharacter.evolveCharacter();
+
+        if (gameCharacter.isBreakPorte()){
+            obstacleTable = new ArrayList<>();
+            obstacleTable.add(sol);
+            for (Monster monster : monsterList){
+                monster.setCoord(new Coordonnees(monster.getCoord().getX(), monster.getCoord().getZ()-10));
+            }
+
+        }
+        Coffre.EvolveAllCoffres(coffreTable);
+
+
         //kunais evoluent dans le jeu
         Kunai.evolveAllKunais(kunaiList);
         //coeurs healent
diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java
index f08823bf000bae75ce75f482f494e55c9145292b..aa56796ca37f6dab684000143e6ad3e34f05c2cc 100644
--- a/MAVENProject/src/main/java/jeu/Painter.java
+++ b/MAVENProject/src/main/java/jeu/Painter.java
@@ -50,7 +50,7 @@ public class Painter implements GamePainter{
         assert url != null;
         int placeX = -10;
         String beginPath = url.toString().substring(6)+"/";
-        crayon.drawImage(new ImageIcon(beginPath+"background_rdm.png").getImage(), 0-xCam, 0-zCam, null, null);
+        crayon.drawImage(new ImageIcon(beginPath+"background.png").getImage(), 0-xCam, 0-zCam, null, null);
 
         drawMap(crayon);
         drawSol(crayon);
diff --git a/MAVENProject/src/main/java/map/Coffre.java b/MAVENProject/src/main/java/map/Coffre.java
index 2c0b5d289b48655d26a91bb36eef8e217cf941a2..278a528465d7b71acc3df96af5371a694f6debca 100644
--- a/MAVENProject/src/main/java/map/Coffre.java
+++ b/MAVENProject/src/main/java/map/Coffre.java
@@ -1,6 +1,7 @@
 package map;
 
 import java.awt.image.BufferedImage;
+import java.util.List;
 
 import environnement.HitBox;
 import jeu.Jeu;
@@ -18,6 +19,17 @@ public class Coffre {
         image = Jeu.getLevelmanager().getImageCoffre();
 
 
+    }
+    public static void EvolveAllCoffres(List<Coffre> coffreList){
+        int k=0;
+        while (k<coffreList.size()){
+            if (coffreList.get(k).key){
+                k++;
+            }
+            else{
+                coffreList.remove(coffreList.get(k));
+            }
+        }
     }
     public HitBox getHitbox() {
         return hitbox;
diff --git a/MAVENProject/src/main/java/map/LevelManager.java b/MAVENProject/src/main/java/map/LevelManager.java
index e3261d007d022a8f74dc6aa0a958a298b213404f..c0b06a15a1608619095ae055a88d02bb0f772efd 100644
--- a/MAVENProject/src/main/java/map/LevelManager.java
+++ b/MAVENProject/src/main/java/map/LevelManager.java
@@ -21,11 +21,12 @@ public class LevelManager {
 	private Level levelOne;
 	private Level levelTwo;
 	private List<BufferedImage> obstacleImage = new ArrayList<>();
-	private static int indexBoss;
+	private int indexBoss;
+	private int indexPorte;
 
 	public LevelManager() {
 		importOutsideSprites();
-		levelOne = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_ONE));
+		levelOne = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_TWO));
 		//levelTwo = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_TWO));
 	}
 
@@ -82,6 +83,7 @@ public class LevelManager {
 	public List<Obstacle> generateObstacleTable() {
 		List<Obstacle> obstacleList = new ArrayList<>();
 		BufferedImage[] tabImages = importOutsideSprites();
+		Obstacle obstaclePorte = new Obstacle(new HitBox(new Coordonnees(1,1),1,1));
 		for (int j = 0; j < Jeu.TILES_IN_HEIGHT; j++){
 			for (int i = 0; i < Jeu.TILES_IN_WIDTH; i++) {
 				int index = levelOne.getSpriteIndex(i, j);
@@ -113,9 +115,9 @@ public class LevelManager {
 					obstacleImage.add(tabImages[4]);
 				}
 				//Porte du boss
-
 				if (index==44) {
-					//obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+1*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE-1)));
+					obstaclePorte = new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+1*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE-1));
+					obstacleList.add(obstaclePorte);
 					obstacleImage.add(tabImages[7]);
 				}
 				//Terre verticale de 6 de hauteur
@@ -137,7 +139,6 @@ public class LevelManager {
 				if (index==29) {
 					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-20*Jeu.TILES_SIZE/2), 20*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
 					obstacleImage.add(tabImages[10]);
-					System.out.println(i);
 				}
 
 				//Specifique au niveau 2 :
@@ -169,34 +170,32 @@ public class LevelManager {
 				}
 
 			}
-		}return obstacleList;
+
+		}indexPorte=obstacleList.indexOf(obstaclePorte);
+		return obstacleList;
 	}
 	public List<Monster> generateMonsterTable() {
 		List<Monster> monsterList = new ArrayList<>();
-		Boss boss = new Boss(new Coordonnees(1, 1), 1, 1, 1, 1, 1);
 		for (int j = 0; j < Jeu.TILES_IN_HEIGHT; j++){
 			for (int i = 0; i < Jeu.TILES_IN_WIDTH; i++) {
 				int index = levelOne.getSpriteIndex(i, j);
 
 				//Monstres à pied
 				if (index == 45) {
-					monsterList.add(new Monster(new Coordonnees(32 * i + 30 / 2, 32 * j - 62 / 2), 1000, 30, 60, 1, 3));
-					System.out.println("ça a bien créé un monstre");
+					monsterList.add(new Monster(new Coordonnees(32 * i + 30 / 2, 32 * j - 62 / 2), 1000, 30, 60, 1, 5));
 				}
 				//chauve-souris
 				if (index == 46) {
-					monsterList.add(new Bat(new Coordonnees(32 * i + 20 / 2, 32 * j - 30 / 2), 1, 1));
-					System.out.println("oui");
+					monsterList.add(new Bat(new Coordonnees(32 * i + 20 / 2, 32 * j - 30 / 2), 1, 3));
 				}
 				//Boss
 				if (index == 47) {
-					boss = new Boss(new Coordonnees(32*i, 32*j-140/2), 500, 32, 96, 3, 30);
-					monsterList.add(boss);
-					
+					monsterList.add(new Boss(new Coordonnees(32*i, 32*j-140/2), 500, 32, 96, 3, 50));
+					indexBoss = monsterList.size()-1;
 				}
 			}
 		}
-		indexBoss = monsterList.indexOf(boss);
+		System.out.println(monsterList);
 		return monsterList;
 	}
 
@@ -233,8 +232,11 @@ public class LevelManager {
 		return importOutsideSprites()[5];
 	}
 
-	public static int getIndexBoss() {
+	public int getIndexBoss() {
 		return indexBoss;
-	} 
-	
+	}
+
+	public int getIndexPorte() {
+		return indexPorte;
+	}
 }
diff --git a/MAVENProject/src/main/resources/Obstacles/background.jpg b/MAVENProject/src/main/resources/Obstacles/background.jpg
deleted file mode 100644
index df6f5acfc3fddbaef639584e3bc8064ae38d60ac..0000000000000000000000000000000000000000
Binary files a/MAVENProject/src/main/resources/Obstacles/background.jpg and /dev/null differ
diff --git a/MAVENProject/src/main/resources/Obstacles/background.png b/MAVENProject/src/main/resources/Obstacles/background.png
index 719d3d6523c0ddb7cb57e60b3b3dce40cc41a7cc..9b29c4f917d4fb9da6cd2c41f9e60b4e96a246b2 100644
Binary files a/MAVENProject/src/main/resources/Obstacles/background.png and b/MAVENProject/src/main/resources/Obstacles/background.png differ
diff --git a/MAVENProject/src/main/resources/Obstacles/background_rdm.png b/MAVENProject/src/main/resources/Obstacles/background_rdm.png
deleted file mode 100644
index 6acac0bef75b2759600376b9d26297923dba7d25..0000000000000000000000000000000000000000
Binary files a/MAVENProject/src/main/resources/Obstacles/background_rdm.png and /dev/null differ