diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index 4bbf80ca4c43e48c73d63e8b643a6fcc5ecd8cbf..0dd4ca9296383d3ecf9e1e353860df8d0c57690b 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -23,6 +23,7 @@ import map.Coffre; import map.LevelManager; + public class Jeu implements Game{ //coordonnees du sol @@ -62,8 +63,13 @@ public class Jeu implements Game{ //liste des coeurs drop par les monstres private static List<Hearth> hearthList = new ArrayList<>(); - //le sol - public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1088),1,1000000)); + //Sol du niveau 1 : + + //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 List<Obstacle> obstacleTable = new ArrayList<>(); private static List<Monster> monsterList = new ArrayList<>(); @@ -72,8 +78,14 @@ public class Jeu implements Game{ public final static int TILES_DEFAULT_SIZE=32; public final static float SCALE=1.0f; - public final static int TILES_IN_WIDTH = 132; - public final static int TILES_IN_HEIGHT = 42; + //Taille fenêtre niveau 1 : + + //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_SIZE = (int) (TILES_DEFAULT_SIZE*SCALE); private static final LevelManager levelManager = new LevelManager(); ; diff --git a/MAVENProject/src/main/java/loaders/LoadSave.java b/MAVENProject/src/main/java/loaders/LoadSave.java index 14d817d926161c9d92268c7e887a85adad69fef6..336a422efe46c0bdc6190a5a4dbe3d834484cdda 100644 --- a/MAVENProject/src/main/java/loaders/LoadSave.java +++ b/MAVENProject/src/main/java/loaders/LoadSave.java @@ -13,9 +13,10 @@ public class LoadSave { //Association des differents sprites des blocs - public static final String LEVEL_SPRITES = "Obstacles/Sprites_map.png"; + public static final String LEVEL_SPRITES = "Obstacles/Sprites_map_1_2.png"; //Map composee de pixels public static final String LEVEL_ONE = "Obstacles/level_one_pixels.png"; + public static final String LEVEL_TWO = "Obstacles/level_two_pixels.png"; public static BufferedImage GetSpriteAtlas(String fileName) { BufferedImage img = null; @@ -35,61 +36,92 @@ public class LoadSave { return img; } //Prend en compte la valeur de la composante rouge des pixels ce qui permet de differencier les blocs - public static int[][] GetLevelData() { + public static int[][] GetLevelData(String Level) { int[][] lvlData = new int[Jeu.TILES_IN_HEIGHT][Jeu.TILES_IN_WIDTH]; - BufferedImage img = GetSpriteAtlas(LEVEL_ONE); + BufferedImage img = GetSpriteAtlas(Level); for (int j = 0; j < img.getHeight(); j++) for (int i = 0; i < img.getWidth(); i++) { Color color = new Color(img.getRGB(i, j)); int value = color.getRed(); + int copyValue=value; //longs blocs de 17 de hauteur - if (0<=value && value <= 10) - value = 0; + if (0<=value && value <= 5) + copyValue = 20; //Blocs de 3 pixels de hauteur - if (11<=value && value <= 30) - value = 1; + if (6<=value && value <= 15) + copyValue = 21; //Blocs de 2 de hauteur - if (31<=value && value <= 50) - value = 2; + if (16<=value && value <= 25) + copyValue = 22; //bloc de 2 de longueur - if (51<=value && value <= 70) - value = 3; + if (26<=value && value <= 35) + copyValue = 23; //Bloc de 3 de longeur - if (71<=value && value <= 90) - value = 5; + if (36<=value && value <= 45) + copyValue = 25; //Long bloc de 7 de longueur - if (91<=value && value <= 110) - value = 41; - //Espaces vides - if (111<=value && value <= 130) - value = 25; + if (300<=value && value <= 305) + value = 101; + //Coffres - if (131<=value && value <= 150) - value = 13; + if (56<=value && value <= 65) + copyValue = 43; + //Espaces vides + if (66<=value && value <= 75) + copyValue = 62; //MOnstres à pied - if (151<=value && value <= 170) - value = 15; + if (76<=value && value <= 85) + copyValue = 45; //Bat - if (171<=value && value <= 190) - value = 16; + if (86<=value && value <= 95) { + copyValue = 46; + System.out.println(i); + } //Boss - if (191<=value && value <= 210) - value = 17; + if (96<=value && value <= 105) + copyValue = 47; //Porte du boss - if (211<=value && value <= 225) - value = 14; + if (106<=value && value <= 115) + copyValue = 44; //Terre horizontale de 7 de longueur - if (226<=value && value <= 235) - value = 51; + if (226<=value && value <= 235) { + copyValue = 121; + System.out.println("terre"); + } //Terre verticale de 6 de hauteur if (236<=value && value <= 245) - value = 8; + copyValue = 28; + //Terre verticale de 20 de hauteur - if (246<=value && value <= 252) - value = 9; + if (46<=value && value <= 55) { + copyValue = 29; + System.out.println(i); + + } + + //Spécifique au niveau 2 : + + //bloc de 20 de longueur + if (116<=value && value <= 125) + copyValue = 0; + //bloc de 9 de longueur + if (126<=value && value <= 135) + copyValue = 30; + //Bloc de 5 de hauteur + if (136<=value && value <= 145) + copyValue = 52; + //Bloc de 9 de hauteur + if (146<=value && value <= 155) + copyValue = 51; + //Bloc de 12 de hauteur + if (156<=value && value <= 165) + copyValue = 50; //Liste des valeurs - lvlData[j][i] = value; + lvlData[j][i] = copyValue; + if (lvlData[j][i]==121){ + System.out.println("terre cree"); + } } return lvlData; diff --git a/MAVENProject/src/main/java/map/LevelManager.java b/MAVENProject/src/main/java/map/LevelManager.java index 79296bd18c37af1abd36a5fe51f4eaa1cdd7e04b..d9fdb3b65987e28e076569adcbc8c81a3f5de88c 100644 --- a/MAVENProject/src/main/java/map/LevelManager.java +++ b/MAVENProject/src/main/java/map/LevelManager.java @@ -19,40 +19,55 @@ public class LevelManager { private BufferedImage[] levelSprite; private Level levelOne; + private Level levelTwo; private List<BufferedImage> obstacleImage = new ArrayList<>(); public LevelManager() { importOutsideSprites(); - levelOne = new Level(LoadSave.GetLevelData()); + levelOne = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_TWO)); + //levelTwo = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_TWO)); } private BufferedImage[] importOutsideSprites() { BufferedImage img = LoadSave.GetSpriteAtlas(LoadSave.LEVEL_SPRITES); - levelSprite = new BufferedImage[11]; + levelSprite = new BufferedImage[16]; //Pour les sprites de chaque bloc //longs blocs de 17 de hauteur - levelSprite[0] = img.getSubimage(0, 0, 32, 544); + levelSprite[0] = img.getSubimage(0, 32, 32, 544); //Blocs de 3 pixels de hauteur - levelSprite[1] = img.getSubimage( 32, 0, 32, 96); + levelSprite[1] = img.getSubimage( 32, 32, 32, 96); //Blocs de 2 de hauteur - levelSprite[2] = img.getSubimage(2 * 32, 0, 32, 64); + levelSprite[2] = img.getSubimage(2 * 32, 32, 32, 64); //bloc de 2 de longueur - levelSprite[3] = img.getSubimage(3 * 32, 0, 64, 32); + levelSprite[3] = img.getSubimage(3 * 32, 32, 64, 32); //Bloc de 3 de longeur - levelSprite[4] = img.getSubimage(5 * 32, 0, 96, 32); + levelSprite[4] = img.getSubimage(5 * 32, 32, 96, 32); //Coffres - levelSprite[5] = img.getSubimage(3 * 32, 32, 32, 32); + levelSprite[5] = img.getSubimage(3 * 32, 2 * 32, 32, 32); //Long bloc de 7 de longueur - levelSprite[6] = img.getSubimage(32, 4 * 32, 224, 32); + //levelSprite[6] = img.getSubimage(32, 5 * 32, 224, 32); //Porte du boss - levelSprite[7] = img.getSubimage(4 * 32, 32, 32, 96); + levelSprite[7] = img.getSubimage(4 * 32, 2 * 32, 32, 96); //Terre verticale de 6 de hauteur - levelSprite[8] = img.getSubimage(8 * 32, 0, 32, 192); + levelSprite[8] = img.getSubimage(8 * 32, 32, 32, 192); //Terre horizontale de 7 de longueur - levelSprite[9] = img.getSubimage(32, 5 * 32, 224, 32); + levelSprite[9] = img.getSubimage(32, 6 * 32, 224, 32); //longs blocs de 20 de hauteur - levelSprite[10] = img.getSubimage(9 * 32, 0, 32, 640); + levelSprite[10] = img.getSubimage(9 * 32, 32, 32, 640); + + //Specifique au niveau 2 : + + //bloc de 20 de longueur + levelSprite[11] = img.getSubimage(0, 0, 640, 32); + //bloc de 9 de longueur + levelSprite[12] = img.getSubimage(10 * 32, 32, 288, 32); + //Bloc de 5 de hauteur + levelSprite[13] = img.getSubimage(12 * 32, 2 *32, 32, 160); + //Bloc de 9 de hauteur + levelSprite[14] = img.getSubimage(11 * 32, 2 * 32, 32, 288); + //Bloc de 12 de hauteur + levelSprite[15] = img.getSubimage(10 * 32, 2 * 32, 32, 384); /*for (int j = 0; j < 2; j++) for (int i = 0; i < 9; i++) { int index = j * 9 + i; @@ -72,54 +87,83 @@ public class LevelManager { //Index selon la couleur associée au bloc //longs blocs de 17 de hauteur - if (index==0) { + if (index==20) { obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-17*Jeu.TILES_SIZE/2), 17*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[0]); } //Blocs de 3 pixels de hauteur - if (index==1) { + if (index==21) { 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))); obstacleImage.add(tabImages[1]); } //Blocs de 2 de hauteur - if (index==2) { + if (index==22) { 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))); obstacleImage.add(tabImages[2]); } //bloc de 2 de longueur - if (index==3) { + if (index==23) { 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))); obstacleImage.add(tabImages[3]); } //Bloc de 3 de longeur - if (index==5) { + if (index==25) { 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))); obstacleImage.add(tabImages[4]); } //Porte du boss - if (index==14) { + 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))); obstacleImage.add(tabImages[7]); } //Terre verticale de 6 de hauteur - if (index==8) { + if (index==28) { obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+1*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-6*Jeu.TILES_SIZE/2), 6*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[8]); } //Terre horizontale de 7 de longueur - if (index==51) { + if (index==121) { obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-1*Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[9]); } //Long bloc de 7 de longueur - if (index==41) { + if (index==101) { obstacleList.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))); obstacleImage.add(tabImages[6]); } //longs blocs de 20 de hauteur - if (index==9) { + 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 : + + //bloc de 20 de longueur + if (index==0) { + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+20*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-1*Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 20*Jeu.TILES_SIZE))); + obstacleImage.add(tabImages[11]); + } + //bloc de 9 de longueur + if (index==30) { + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+9*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-1*Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 9*Jeu.TILES_SIZE))); + obstacleImage.add(tabImages[12]); + } + //Bloc de 5 de hauteur + if (index==52) { + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-5*Jeu.TILES_SIZE/2), 5*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleImage.add(tabImages[13]); + } + //Bloc de 9 de hauteur + if (index==51) { + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-9*Jeu.TILES_SIZE/2), 9*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleImage.add(tabImages[14]); + } + //Bloc de 12 de hauteur + if (index==50) { + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-12*Jeu.TILES_SIZE/2), 12*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleImage.add(tabImages[15]); } } @@ -132,22 +176,24 @@ public class LevelManager { int index = levelOne.getSpriteIndex(i, j); //Monstres à pied - if (index == 15) { + if (index == 45) { monsterList.add(new Monster(new Coordonnees(32 * i + 30 / 2, 32 * j - 62 / 2), 1000, 30, 60, 1, 5)); - + System.out.println("ça a bien créé un monstre"); } //chauve-souris - if (index == 16) { + if (index == 46) { monsterList.add(new Bat(new Coordonnees(32 * i + 20 / 2, 32 * j - 30 / 2), 1, 3)); - + System.out.println("oui"); } //Boss - if (index == 17) { - monsterList.add(new Boss(new Coordonnees(32*i, 32*j-96/2), 500, 32, 96, 3, 50)); + if (index == 47) { + monsterList.add(new Boss(new Coordonnees(32*i, 32*j-140/2), 500, 32, 96, 3, 50)); } } - }return monsterList; + } + System.out.println(monsterList); + return monsterList; } public List<Coffre> generateCoffreTable(){ @@ -157,7 +203,7 @@ public class LevelManager { for (int i = 0; i < Jeu.TILES_IN_WIDTH; i++) { int index = levelOne.getSpriteIndex(i, j); //Coffres - if (index==13) { + if (index==43) { 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))); } diff --git a/MAVENProject/src/main/resources/Obstacles/Sprites_map_1_2.png b/MAVENProject/src/main/resources/Obstacles/Sprites_map_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..76b87b03a6aded300c6855f95260f566f29f6238 Binary files /dev/null and b/MAVENProject/src/main/resources/Obstacles/Sprites_map_1_2.png differ diff --git a/MAVENProject/src/main/resources/Obstacles/level_one_pixels.png b/MAVENProject/src/main/resources/Obstacles/level_one_pixels.png index d98f4f27aa786e0be4dedad5574336ed9128fac1..306dd2294ab688b4d3fd59bb7d70bc2b7f9ff00e 100644 Binary files a/MAVENProject/src/main/resources/Obstacles/level_one_pixels.png and b/MAVENProject/src/main/resources/Obstacles/level_one_pixels.png differ diff --git a/MAVENProject/src/main/resources/Obstacles/level_two_pixels.png b/MAVENProject/src/main/resources/Obstacles/level_two_pixels.png new file mode 100644 index 0000000000000000000000000000000000000000..f346ebe69c73a26d0ad0fafd20009d3887ca391a Binary files /dev/null and b/MAVENProject/src/main/resources/Obstacles/level_two_pixels.png differ