From f6ce5f3484469b139a4bc40d5208431b56c58100 Mon Sep 17 00:00:00 2001 From: Louis MALTERRE <malterre.louis@laposte.net> Date: Fri, 16 Dec 2022 17:47:12 +0100 Subject: [PATCH] debut sprites obstacles et coffres LM --- Backlog sprint 4 | 5 ++++ MAVENProject/src/main/java/jeu/Jeu.java | 10 ++++--- MAVENProject/src/main/java/jeu/Painter.java | 13 +++++++-- .../src/main/java/loaders/ObstacleLoader.java | 1 + MAVENProject/src/main/java/map/Coffre.java | 14 ++++++++++ .../src/main/java/map/LevelManager.java | 27 ++++++++++++++----- 6 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 Backlog sprint 4 diff --git a/Backlog sprint 4 b/Backlog sprint 4 new file mode 100644 index 0000000..911bf5b --- /dev/null +++ b/Backlog sprint 4 @@ -0,0 +1,5 @@ +Porte du Boss +boss +Mort du perso/boss (donc fin du jeu) +Menu (page instructions, debut, fin, choix du niveau et perso) +implémentation de soin (apparition aléatoire d'un coeur en tuant un monstre) \ No newline at end of file diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index c5625cd..3d4f726 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -71,7 +71,8 @@ public class Jeu implements Game{ public final static int TILES_IN_WIDTH = 60; public final static int TILES_IN_HEIGHT = 20; public final static int TILES_SIZE = (int) (TILES_DEFAULT_SIZE*SCALE); - LevelManager levelManager; + private static final LevelManager levelManager = new LevelManager(); + ; public Jeu(String source) { @@ -87,8 +88,7 @@ public class Jeu implements Game{ /*A = new ArrayList<Double>(); n = 0;*/ - levelManager = new LevelManager(); - + try { helpReader = new BufferedReader(new FileReader(source)); String line; @@ -262,6 +262,10 @@ public class Jeu implements Game{ Jeu.kunaiList = kunaiList; } + public static LevelManager getLevelmanager() { + return levelManager; + } + } \ No newline at end of file diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java index 0757b81..3f01b0f 100644 --- a/MAVENProject/src/main/java/jeu/Painter.java +++ b/MAVENProject/src/main/java/jeu/Painter.java @@ -102,8 +102,8 @@ public class Painter implements GamePainter{ 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 drawObstacleBis(Graphics2D crayon, Obstacle obstacle, String nom){ - ObstacleLoader loader = new ObstacleLoader(obstacle,nom); + private void drawObstacleBis(Graphics2D crayon, Obstacle obstacle, BufferedImage bufferedImage){ + ObstacleLoader loader = new ObstacleLoader(obstacle,bufferedImage); HitBox hitBox = loader.getObstacle().getHitbox(); int z = (int) hitBox.getCentre().getZ(); int x = (int) hitBox.getCentre().getX(); @@ -112,6 +112,7 @@ public class Painter implements GamePainter{ private void drawCoffre(Graphics2D crayon, Coffre coffre){ HashMap<String, Coordonnees> extremites = coffre.getHitbox().getExtremites(); + Coordonnees coffreCenter = coffre.getHitbox().getCentre(); Coordonnees hd = extremites.get("HautDroite"); Coordonnees bd = extremites.get("BasDroite"); Coordonnees hg = extremites.get("HautGauche"); @@ -120,6 +121,7 @@ public class Painter implements GamePainter{ 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); + crayon.drawImage(coffre.getImage(), (int)coffreCenter.getX() - (int) coffre.getHitbox().getWidth()/2 -xCam,(int) coffreCenter.getZ() - (int) coffre.getHitbox().getHeight()/2 -zCam,null,null); } @@ -143,6 +145,7 @@ public class Painter implements GamePainter{ } drawObstacle(crayon,obs); } + drawAllObstacle(crayon); for (Coffre obs : Jeu.getCoffreTable()){ if (!collision(gameCharacter.getHitBox(), obs.getHitbox())){ crayon.setColor(Color.blue); @@ -154,6 +157,12 @@ public class Painter implements GamePainter{ } } + private void drawAllObstacle(Graphics2D crayon){ + for (int i=0;i < Jeu.getObstacleTable().size()-1;i++){ + drawObstacleBis(crayon, Jeu.getObstacleTable().get(i), getLevelmanager().getObstacleImage().get(i)); + } + } + /*private void drawCoffreBis(Graphics2D crayon, Coffre coffre, String nom){ CoffreLoader loader = new CoffreLoader(coffre,nom); diff --git a/MAVENProject/src/main/java/loaders/ObstacleLoader.java b/MAVENProject/src/main/java/loaders/ObstacleLoader.java index 5bdd2ad..9cd7b3a 100644 --- a/MAVENProject/src/main/java/loaders/ObstacleLoader.java +++ b/MAVENProject/src/main/java/loaders/ObstacleLoader.java @@ -10,6 +10,7 @@ public class ObstacleLoader { private final Image imageObstacle; private final Obstacle obstacle; + public Image getImageObstacle() { return imageObstacle; diff --git a/MAVENProject/src/main/java/map/Coffre.java b/MAVENProject/src/main/java/map/Coffre.java index 92c26e7..4aed7d0 100644 --- a/MAVENProject/src/main/java/map/Coffre.java +++ b/MAVENProject/src/main/java/map/Coffre.java @@ -1,6 +1,11 @@ package map; +import java.io.BufferedReader; +import java.net.URL; +import java.awt.image.BufferedImage; + import environnement.HitBox; +import jeu.Jeu; @@ -8,12 +13,21 @@ public class Coffre { private final HitBox hitbox; public boolean key = true; + private BufferedImage image; public Coffre(HitBox h){ this.hitbox = h; + image = Jeu.getLevelmanager().getImageCoffre(); + + } public HitBox getHitbox() { return hitbox; } + public BufferedImage getImage() { + return image; + } + + } diff --git a/MAVENProject/src/main/java/map/LevelManager.java b/MAVENProject/src/main/java/map/LevelManager.java index 2c7bcf7..510e515 100644 --- a/MAVENProject/src/main/java/map/LevelManager.java +++ b/MAVENProject/src/main/java/map/LevelManager.java @@ -18,13 +18,14 @@ public class LevelManager { private BufferedImage[] levelSprite; private Level levelOne; + private List<BufferedImage> obstacleImage = new ArrayList<>(); public LevelManager() { importOutsideSprites(); levelOne = new Level(LoadSave.GetLevelData()); } - private void importOutsideSprites() { + private BufferedImage[] importOutsideSprites() { BufferedImage img = LoadSave.GetSpriteAtlas(LoadSave.LEVEL_SPRITES); levelSprite = new BufferedImage[7]; @@ -48,10 +49,14 @@ public class LevelManager { int index = j * 9 + i; levelSprite[index] = img.getSubimage(i * 32, j * 32, 32, 32); }*/ + return levelSprite; } + + public List<Obstacle> generateObstacleTable() { List<Obstacle> obstacleList = new ArrayList<>(); + BufferedImage[] tabImages = importOutsideSprites(); 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); @@ -60,32 +65,32 @@ public class LevelManager { //longs blocs de 6 de hauteur if (index==0) { 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))); - + obstacleImage.add(tabImages[0]); } //Blocs de 3 pixels de hauteur if (index==1) { 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) { 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) { 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) { 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]); } //Long bloc de 7 de longueur if (index==25) { 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]); } } @@ -134,6 +139,14 @@ public class LevelManager { public Level getCurrentLevel() { return levelOne; + } + + public List<BufferedImage> getObstacleImage() { + return obstacleImage; } + public BufferedImage getImageCoffre() { + return importOutsideSprites()[5]; + } + } -- GitLab