From f49a7d0d481dfa1aadc5741657b652fb47ad12b5 Mon Sep 17 00:00:00 2001
From: Louis MALTERRE <malterre.louis@laposte.net>
Date: Wed, 14 Dec 2022 20:40:52 +0100
Subject: [PATCH] coffres actives, methode clone pour character crees (pour
 protection du peros dans le code). un peu de menage fait. UML maj (pas
 complete) (mettez le a jour regulierement svp, car apres c est tjr moi qui l
 update et ca prend un bon ptit moment pour tout remettre a jour) LM

---
 MAVENProject/PlanUML.puml                     | 38 ++++++++++
 .../src/main/java/engine/DrawingPanel.java    |  3 +-
 .../src/main/java/entity/Character.java       | 38 ++++------
 MAVENProject/src/main/java/entity/Entity.java | 10 +--
 MAVENProject/src/main/java/jeu/Jeu.java       | 34 ++++-----
 MAVENProject/src/main/java/jeu/Painter.java   | 36 ++++------
 .../main/java/loaders/CharacterLoader.java    |  1 -
 .../src/main/java/map/LevelManager.java       | 69 ++++++++++---------
 MAVENProject/src/main/java/start/Main.java    |  1 -
 9 files changed, 121 insertions(+), 109 deletions(-)

diff --git a/MAVENProject/PlanUML.puml b/MAVENProject/PlanUML.puml
index ac99dfa..420778b 100644
--- a/MAVENProject/PlanUML.puml
+++ b/MAVENProject/PlanUML.puml
@@ -235,4 +235,42 @@ class spotify.MP3{
 + void displayMusic()
 }
 
+class map.Coffre {
+    - HitBox hitBox
+    + boolean key
+    + HitBox getHitBox()
+}
+
+class map.LevelManager{
+    - BufferedImage[] levelSprite
+    - Level levelOne
+    - void importOutsideSprites()
+    + List<Obstacle> generateObstacleTable()
+    + List<Monster> generateMonsterTable()
+    + List<Coffre> generateCoffreTable()
+    + void update()
+    + Level getCurrentLevel()
+}
+
+class map.Level{
+    - int[][] lvlData
+    + int getSpriteIndex(int,int)
+    + int[][] getLevelData()
+}
+
+class loaders.LoadSave{
+    + static final String LEVEL_SPRITES
+    + static final String LEVEL_ONE
+    + static BufferedImage GetSpriteAtlas(String)
+    + static int[][] GetLevelData()
+}
+
+class loaders.ObstacleLoader{
+- Image imageObstacle
+- Obstacle obstacle
++ Image getImageObstacle()
++ Obstacle getObstacle()
+
+}
+
 @enduml
\ No newline at end of file
diff --git a/MAVENProject/src/main/java/engine/DrawingPanel.java b/MAVENProject/src/main/java/engine/DrawingPanel.java
index 56026bd..b253f6c 100644
--- a/MAVENProject/src/main/java/engine/DrawingPanel.java
+++ b/MAVENProject/src/main/java/engine/DrawingPanel.java
@@ -10,7 +10,7 @@ import java.awt.image.BufferedImage;
 
 import javax.swing.JPanel;
 import static jeu.Jeu.getGameCharacter;
-import map.LevelManager;
+
 public class DrawingPanel extends JPanel {
 
 	/**
@@ -36,7 +36,6 @@ public class DrawingPanel extends JPanel {
 	/**
 	 * la taille des images
 	 */
-	private LevelManager levelManager;
 	private int width, height;
 
 	/**
diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java
index af3b566..5c4b1e6 100644
--- a/MAVENProject/src/main/java/entity/Character.java
+++ b/MAVENProject/src/main/java/entity/Character.java
@@ -18,7 +18,7 @@ import map.Coffre;
 
 import static jeu.Jeu.getObstacleTable;
 //import static jeu.Jeu.gameCharacter;
-import static jeu.Jeu.getCoffreTable;
+
 
 public class Character extends Entity{
 
@@ -45,8 +45,7 @@ public class Character extends Entity{
         nbMaxFramesInvicible = 500; 
     }
 
-    @Override
-    public void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 (en l'air) ou 1 (au sol) en fonction
+    private void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 (en l'air) ou 1 (au sol) en fonction
         
         double delta = Math.pow(10, -3); // pas de temps remis en secondes
 
@@ -68,12 +67,12 @@ public class Character extends Entity{
             direction = (int) Math.signum(vitesseActuX);
         }
 
-        vitesseActuZ = vitesseActuZ + 10*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta;
+        vitesseActuZ = vitesseActuZ + 8*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta;
         //System.out.println(vitesseActuZ);
         if (Math.abs(vitesseActuZ) > vitesseMax*500)vitesseActuZ = Math.signum(vitesseActuZ)*vitesseMax*500;
     }
 
-    public void collisionGestion(){
+    private void collisionGestion(){
         List<Obstacle> listeObstaclesInVoisinage = getObstacleTable();
         //stocke l'obstacle avec lequel il y a eu collision
         HashMap<Obstacle,PositionCollision> collisionsPresentes = new HashMap<Obstacle,PositionCollision>();
@@ -91,14 +90,6 @@ public class Character extends Entity{
         //on set alpha a 0 (on suppose qu'il est en l'air)
         alpha = 0;
 
-        /*if (this.hitBox.getExtremites().get("BasDroite").getZ()+entityHEIGHT/2-obstacleBeneath.getHitbox().getExtremites().get("HautDroite").getZ()>=-1 && this.hitBox.getExtremites().get("HautDroite").getX()>obstacleBeneath.getHitbox().getExtremites().get("BasGauche").getX() && this.hitBox.getExtremites().get("HautGauche").getX()<obstacleBeneath.getHitbox().getExtremites().get("BasDroite").getX()) {
-
-            alpha = 1;
-
-        }
-        else {*/
-            //par defaut l'obstacle en dessous c'est le sol
-            //obstacleBeneath=Jeu.sol;
             //on parcourt pour tester si il est sur un block
             for (int i=0;i<collisionsPresentes.size();i++){
                 //si on trouve on sort de la boucle (pas besoin d'aller plus loin), on n'étudie qui si on ne donne pas de commande
@@ -108,7 +99,6 @@ public class Character extends Entity{
                 if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == BAS ){
                     this.vitesseActuZ = 0;
                     this.setCoord(new Coordonnees(this.getCoord().getX(), getObstacleTable().get(i).getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2));
-                    //obstacleBeneath=listeObstaclesInVoisinage.get(i);
                     alpha = 1;
 
                     break;
@@ -144,10 +134,9 @@ public class Character extends Entity{
 
         }
         
-        //celles du haut
+        //on gere celles du haut
         for (int i=0;i<collisionsPresentes.size();i++){
             if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == HAUT){
-                System.out.println("coucou");
                 this.vitesseActuZ = 0;
                 this.setCoord(new Coordonnees(this.getCoord().getX(), listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("BasGauche").getZ()+entityHEIGHT/2+1));
                 break;
@@ -155,7 +144,7 @@ public class Character extends Entity{
         }    
     }
     
-    public void keyGestion() {
+    private void keyGestion() {
     	for (Coffre cof : Jeu.getCoffreTable()){
             if (HitBox.collision(this.getHitBox(), cof.getHitbox())){
             	if (cof.key ==true) {
@@ -167,7 +156,7 @@ public class Character extends Entity{
         }
     }    
 
-    public List<Obstacle> obstacleInVoisinage(){ //recupere la liste des obstacles presents dans le voisinage
+    private List<Obstacle> obstacleInVoisinage(){ //recupere la liste des obstacles presents dans le voisinage
         List<Obstacle> liste = new ArrayList<>();
         for (Obstacle obs : getObstacleTable()){
             if (HitBox.collision(voisinage, obs.getHitbox())){
@@ -178,8 +167,7 @@ public class Character extends Entity{
     }
 
 
-    @Override
-    public void attaque(){
+    private void attaque(){
         Coordonnees attackCenter = new Coordonnees(coord.getX() + direction*entityWIDTH/2, coord.getZ());
         Attack characterAttack = new Attack(attackStat, attackCenter, new HitBox(attackCenter,entityHEIGHT,entityWIDTH+20));
         for (Monster monster : Jeu.getMonsterList()){
@@ -191,7 +179,7 @@ public class Character extends Entity{
     }
     
 
-    public void getGameCommand(){
+    private void getGameCommand(){
 
         Map<String,Boolean> commandeJeu = Jeu.getDirectionJeu();
         if (commandeJeu.get("Right") && commandeJeu.get("Left")){tableCommande.replace("CommandX", (double)0);}
@@ -209,7 +197,7 @@ public class Character extends Entity{
         if (commandeJeu.get("Attack"))tableCommande.replace("CommandAttack", (double)1);
     }
 
-    public void resetCommand(){
+    private void resetCommand(){
         for (String key : tableCommande.keySet()){
             tableCommande.replace(key, (double)0);
         }
@@ -250,7 +238,7 @@ public class Character extends Entity{
         return impulsionSaut;
     }
 
-    public void updateVoisinage(){
+    private void updateVoisinage(){
         voisinage = new HitBox(coord, 1000, 1000);
     }
 
@@ -262,5 +250,7 @@ public class Character extends Entity{
         return tableCommande;
     }
 
-    
+    public Character clone(){
+        return this;
+    }
 }
diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java
index dc9f9dc..5c2ccb1 100644
--- a/MAVENProject/src/main/java/entity/Entity.java
+++ b/MAVENProject/src/main/java/entity/Entity.java
@@ -47,15 +47,15 @@ public abstract class Entity {
 
         nbMaxFramesInvicible = 100;
     }
-    public void deplacements(){}
+    private void deplacements(){}
 
-    public void attaque(){}
+    private void attaque(){}
 
-    public void updateVoisinage(){}
+    private void updateVoisinage(){}
 
-    public void collisionGestion(){}
+    private void collisionGestion(){}
 
-    public List<Obstacle> obstacleInVoisinage(){return new ArrayList<Obstacle>();}
+    private List<Obstacle> obstacleInVoisinage(){return new ArrayList<Obstacle>();}
    
     public Boolean death(){return false;}
     
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
index 457349a..775e5a2 100644
--- a/MAVENProject/src/main/java/jeu/Jeu.java
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -9,8 +9,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import entity.Bat;
-import entity.Boss;
 import entity.Character;
 import entity.Kunai;
 import entity.Monster;
@@ -18,7 +16,6 @@ import entity.ShootingCharacter;
 import engine.Game;
 import environnement.Coordonnees;
 import environnement.HitBox;
-import loaders.ObstacleLoader;
 import map.Obstacle;
 import loaders.CharacterLoader;
 import map.Coffre;
@@ -61,7 +58,8 @@ public class Jeu implements Game{
 
     private boolean characterAttacking = false; //boolean necessaire pour rendre l'animation d'attaque prioritaire
 
-    public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1092),56,1000000));
+        //le sol
+    public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1064),1,1000000));
 
     public static List<Obstacle> obstacleTable = new ArrayList<>();
     private static List<Monster> monsterList = new ArrayList<>();
@@ -90,10 +88,6 @@ public class Jeu implements Game{
         n = 0;*/
 
         levelManager = new LevelManager();
-        levelManager.generateObstacleTable();
-
-
-
 
         try {
             helpReader = new BufferedReader(new FileReader(source));
@@ -114,11 +108,8 @@ public class Jeu implements Game{
         directionJeu.put("Attack",false);
         
         
-        //faut supp la pour table obstacles
-
-
-
-        obstacleTable= levelManager.getListeObstacle();
+        //on genere la table des obstacles
+        obstacleTable= levelManager.generateObstacleTable();
         obstacleTable.add(sol);
 
 
@@ -129,7 +120,8 @@ public class Jeu implements Game{
         obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(600, 662.5),75,50)));
         obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(450, 400),32,128)));*/
 
-        coffreTable.add(new Coffre(new HitBox(new Coordonnees(900, 685),30,30))); //table des coffres
+        //on genere la table des coffres
+        coffreTable = levelManager.generateCoffreTable();
 
         //on met des monstres, faut supp la pour table monstres
         /*monsterList.add(new Monster(new Coordonnees(1000, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,5));
@@ -143,8 +135,8 @@ public class Jeu implements Game{
         gameCharacterLoader = new CharacterLoader(characterSkinPath,new ShootingCharacter(new Coordonnees(xdebut, zdebut), 1500, 1,600000));
         gameCharacter = new ShootingCharacter(new Coordonnees(xdebut, zdebut), 1500, 1,600000);
 
-        levelManager.generateMonsterTable();
-        monsterList= levelManager.getListeMonster();
+        //on genere la table des monstres
+        monsterList= levelManager.generateMonsterTable();
         //on remplit la map des frames
         Map<String,Integer> tempMap = gameCharacterLoader.getPathTable();
 
@@ -204,7 +196,7 @@ public class Jeu implements Game{
         if (!characterAttacking){ //animation d'attaque prioritaire
             if ( gameCharacter.getAlpha()==0) {
                 movement = "character_jump";} // pour savoir si il jump ou non
-            else{
+            else{//savoir si il avance ou non
                 if (Right && Left)movement = "character_idle";
                 else if (Right || Left){
                     movement = "character_run";
@@ -214,17 +206,15 @@ public class Jeu implements Game{
                     movement = "character_idle"; //ca changera quand j'aurai les nouvelles frames
                 }
             }
-            if (gameCharacter.getDirection() == -1)movement += "_L";
+            if (gameCharacter.getDirection() == -1)movement += "_L";//mvt gauche ou droit
+
         }
 
         
  
         //si on a change de mouvement, le jeu doit redemarrer a la premiere frame correspondante
-        //System.out.println(numberOfMovement);
         if ( !previousMovement.equals(movement)){numberOfMovement = 1;nbBeforeFramechgt = nbIterationPerFrame;}
         if (numberOfMovement == gameCharacterLoader.getPathTable().get(movement)){
-            //System.out.println(movement);
-            //characterNotMoving = true;
             if (movement.equals("character_attack") || movement.equals("character_attack_L")){
                 characterAttacking = false;
             }
@@ -258,7 +248,7 @@ public class Jeu implements Game{
     }
 
     public static Character getGameCharacter() {
-        return gameCharacter;
+        return gameCharacter.clone();
     }
 
     public static List<Monster> getMonsterList() {
diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java
index 21f0e86..6c3ac58 100644
--- a/MAVENProject/src/main/java/jeu/Painter.java
+++ b/MAVENProject/src/main/java/jeu/Painter.java
@@ -6,6 +6,7 @@ import entity.Monster;
 import environnement.Coordonnees;
 import environnement.HitBox;
 import loaders.ObstacleLoader;
+import map.Coffre;
 import map.Obstacle;
 import java.awt.*;
 import java.awt.image.BufferedImage;
@@ -17,7 +18,8 @@ import java.net.URL;
 
 import static environnement.HitBox.collision;
 import static jeu.Jeu.*;
-import map.LevelManager;
+
+
 
 
 public class Painter implements GamePainter{
@@ -25,8 +27,7 @@ public class Painter implements GamePainter{
     //protected static final int WIDTH = TILES_SIZE*TILES_IN_WIDTH;
     //protected static final int HEIGHT = TILES_SIZE*TILES_IN_HEIGHT;
     protected static final int WIDTH =1500;
-    protected static final int HEIGHT=1000;
-    private LevelManager levelManager;
+    protected static final int HEIGHT=750;
     public static Obstacle test = new Obstacle(new HitBox(new Coordonnees(300,550),32,128));
 
     private static Coordonnees coordonneesCam;
@@ -34,7 +35,6 @@ public class Painter implements GamePainter{
     public int zCam;
     private int decalage = 255; // decalage Cam bas pour perso
 
-    private Painter painter;
     public Painter() {
     }
 
@@ -47,7 +47,6 @@ public class Painter implements GamePainter{
 
         drawMap(crayon);
         drawSol(crayon);
-        //drawObstacleBis(crayon,test,"plateforme.png"); // A changer
         drawLifePoints(crayon);
         drawKey(crayon);
         drawMonsters(crayon);
@@ -72,7 +71,7 @@ public class Painter implements GamePainter{
     
     private void drawKey(Graphics2D crayon){
     	if(gameCharacter.key==0) {
-    		crayon.fillRect(-10,20,-20,30);
+    		crayon.fillRect(40,60,20,30);
     	}
     }
     private void drawLifePoints(Graphics2D crayon){
@@ -106,24 +105,24 @@ public class Painter implements GamePainter{
         crayon.drawLine((int)hg.getX() - xCam,(int)hg.getZ() - zCam,(int)hd.getX() - xCam,(int)hd.getZ() - zCam);
 
     }
-    /*private void drawCoffre(Graphics2D crayon, Coffre coffre){
+    private void drawCoffre(Graphics2D crayon, Coffre coffre){
         HashMap<String, Coordonnees> extremites = coffre.getHitbox().getExtremites();
         Coordonnees hd = extremites.get("HautDroite");
         Coordonnees bd = extremites.get("BasDroite");
         Coordonnees hg = extremites.get("HautGauche");
         Coordonnees bg = extremites.get("BasGauche");
-        crayon.drawLine((int)hd.getX(),(int)hd.getZ(),(int)bd.getX(),(int)bd.getZ());
-        crayon.drawLine((int)bd.getX(),(int)bd.getZ(),(int)bg.getX(),(int)bg.getZ());
-        crayon.drawLine((int)bg.getX(),(int)bg.getZ(),(int)hg.getX(),(int)hg.getZ());
-        crayon.drawLine((int)hg.getX(),(int)hg.getZ(),(int)hd.getX(),(int)hd.getZ());
+        crayon.drawLine((int)hd.getX() - xCam,(int)hd.getZ() - zCam,(int)bd.getX() - xCam,(int)bd.getZ() - zCam);
+        crayon.drawLine((int)bd.getX() - xCam,(int)bd.getZ() - zCam,(int)bg.getX() - xCam,(int)bg.getZ() - zCam);
+        crayon.drawLine((int)bg.getX() - xCam,(int)bg.getZ() - zCam,(int)hg.getX() - xCam,(int)hg.getZ() - zCam);
+        crayon.drawLine((int)hg.getX() - xCam,(int)hg.getZ() - zCam,(int)hd.getX() - xCam,(int)hd.getZ() - zCam);
 
-    }*/
+    }
 
     private void drawSol(Graphics2D crayon){
         ObstacleLoader loader = new ObstacleLoader(Jeu.getSol(),"Terre.png");
         HitBox hitBox = loader.getObstacle().getHitbox();
         int z = (int) hitBox.getCentre().getZ();
-        for (int x = 0;x<3000;x+=128) {
+        for (int x = 0;x<Jeu.getSol().getHitbox().getWidth();x+=128) {
             crayon.drawImage(loader.getImageObstacle(),x -xCam ,z - zCam,null,null);
         }
     }
@@ -139,7 +138,7 @@ public class Painter implements GamePainter{
             }
             drawObstacle(crayon,obs);
         }
-        /*for (Coffre obs : Jeu.getCoffreTable()){
+        for (Coffre obs : Jeu.getCoffreTable()){
             if (!collision(gameCharacter.getHitBox(), obs.getHitbox())){
                 crayon.setColor(Color.blue);
             }
@@ -147,16 +146,9 @@ public class Painter implements GamePainter{
                 crayon.setColor(Color.red);
             }
             drawCoffre(crayon,obs);
-        }*/
+        }
     }
 
-    private void drawObstacleBis(Graphics2D crayon, Obstacle obstacle, String nom){
-        ObstacleLoader loader = new ObstacleLoader(obstacle,nom);
-        HitBox hitBox = loader.getObstacle().getHitbox();
-        int z = (int) hitBox.getCentre().getZ();
-        int x = (int) hitBox.getCentre().getX();
-        crayon.drawImage(loader.getImageObstacle(), x - (int) hitBox.getWidth()/2 -xCam,z - (int) hitBox.getHeight()/2 -zCam,null,null);
-    }
     
     /*private void drawCoffreBis(Graphics2D crayon, Coffre coffre, String nom){
         CoffreLoader loader = new CoffreLoader(coffre,nom);
diff --git a/MAVENProject/src/main/java/loaders/CharacterLoader.java b/MAVENProject/src/main/java/loaders/CharacterLoader.java
index b71057a..d325200 100644
--- a/MAVENProject/src/main/java/loaders/CharacterLoader.java
+++ b/MAVENProject/src/main/java/loaders/CharacterLoader.java
@@ -10,7 +10,6 @@ import javax.swing.ImageIcon;
 public class CharacterLoader { // classe qui cree le perso
     private Character gameCharacter; // perso a creer
     private String skinPath; // chemin du skin a l'instant t du jeu
-    //private String nameImageOfSkin; // nom de l'image du skin (le truc fonctionne comme ca)
     private Image imageCharacter;
     private Map<String,Integer> pathTable; // objet utilise a revoir
 
diff --git a/MAVENProject/src/main/java/map/LevelManager.java b/MAVENProject/src/main/java/map/LevelManager.java
index b00bb00..4c6d98b 100644
--- a/MAVENProject/src/main/java/map/LevelManager.java
+++ b/MAVENProject/src/main/java/map/LevelManager.java
@@ -1,6 +1,6 @@
 package map;
 
-import java.awt.Graphics;
+
 import java.awt.image.BufferedImage;
 import java.util.ArrayList;
 import java.util.List;
@@ -11,16 +11,13 @@ import environnement.Coordonnees;
 import environnement.HitBox;
 import jeu.Jeu;
 import loaders.LoadSave;
-import jeu.Painter;
+
 
 public class LevelManager {
 
-	private Jeu jeu;
-	private Painter painter;
+
 	private BufferedImage[] levelSprite;
 	private Level levelOne;
-	private List<Obstacle> listeObstacle= new ArrayList<>();
-	private List<Monster> listeMonster= new ArrayList<>();
 
 	public LevelManager() {
 		importOutsideSprites();
@@ -46,69 +43,77 @@ public class LevelManager {
 			}*/
 	}
 
-	public void generateObstacleTable() {
-		for (int j = 0; j < Jeu.TILES_IN_HEIGHT; j++)
+	public List<Obstacle> generateObstacleTable() {
+		List<Obstacle> obstacleList = new ArrayList<>();
+		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);
-				//g.drawImage(levelSprite[index], Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j, Jeu.TILES_SIZE, Jeu.TILES_SIZE, null);
 
 				//Index selon la couleur associée au bloc
 				if (index==0) {
-					listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-6*Jeu.TILES_SIZE/2), 6*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
+					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-6*Jeu.TILES_SIZE/2), 6*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
 
 				}
 				if (index==1) {
-					listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
+					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
 
 				}
 				if (index==2) {
-					listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-2*Jeu.TILES_SIZE/2), 2*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
+					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-2*Jeu.TILES_SIZE/2), 2*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
 
 				}
 				if (index==3) {
-					listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+2*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 2*Jeu.TILES_SIZE)));
+					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+2*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 2*Jeu.TILES_SIZE)));
 
 				}
 				if (index==5) {
-					listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+3*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 3*Jeu.TILES_SIZE)));
-
-				}
-				//Coffres
-				if (index==11) {
-					listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), Jeu.TILES_SIZE, Jeu.TILES_SIZE)));
-
-				}
-				if (index==25) {
-					listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE)));
+					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+3*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 3*Jeu.TILES_SIZE)));
 
 				}
 
 			}
+		}return obstacleList;
 	}
-	public void generateMonsterTable() {
-		for (int j = 0; j < Jeu.TILES_IN_HEIGHT; j++)
+	public List<Monster> generateMonsterTable() {
+		List<Monster> monsterList = new ArrayList<>();
+		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);
 
 				if (index == 13) {
-					listeMonster.add(new Monster(new Coordonnees(32 * i + 30 / 2, 32 * j - 62 / 2), 1000, 30, 60, 1, 5));
+					monsterList.add(new Monster(new Coordonnees(32 * i + 30 / 2, 32 * j - 62 / 2), 1000, 30, 60, 1, 5));
 
 				}
 				//chauve-souris
 				if (index == 14) {
-					listeMonster.add(new Bat(new Coordonnees(32 * i + 20 / 2, 32 * j - 30 / 2), 1, 3));
+					monsterList.add(new Bat(new Coordonnees(32 * i + 20 / 2, 32 * j - 30 / 2), 1, 3));
 
 				}
 			}
-	}
-	public List<Obstacle> getListeObstacle() {
-		return listeObstacle;
+		}return monsterList;
 	}
 
-	public List<Monster> getListeMonster() {
-		return listeMonster;
+	public List<Coffre> generateCoffreTable(){
+		List<Coffre> coffreListe = new ArrayList<>();
+		
+		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);
+				//Coffres
+				if (index==11) {
+					coffreListe.add(new Coffre(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), Jeu.TILES_SIZE, Jeu.TILES_SIZE)));
+
+				}
+				if (index==25) {
+					coffreListe.add(new Coffre(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE)));
+
+				}
+			}
+		}
+		return coffreListe;
 	}
 
+
 	public void update() {
 
 	}
diff --git a/MAVENProject/src/main/java/start/Main.java b/MAVENProject/src/main/java/start/Main.java
index e89553a..b7e97a9 100644
--- a/MAVENProject/src/main/java/start/Main.java
+++ b/MAVENProject/src/main/java/start/Main.java
@@ -1,7 +1,6 @@
 package start;
 
 import jeu.Painter;
-import map.LevelManager;
 import spotify.MP3;
 
 import engine.GameEngineGraphical;
-- 
GitLab