diff --git a/MAVENProject/src/main/java/entity/Bat.java b/MAVENProject/src/main/java/entity/Bat.java index bddaf42fb14ee0d053a5ebb6b581cdaeaafbbdf6..773a7afcf6d435615acddc962de86b060df50233 100644 --- a/MAVENProject/src/main/java/entity/Bat.java +++ b/MAVENProject/src/main/java/entity/Bat.java @@ -11,6 +11,7 @@ public class Bat extends Monster{ public Bat(Coordonnees c,int atkStt,int nbLP){ super(c, 1000, 20, 30, atkStt, nbLP); coordInit = coord; + monsterType = "bat_fly"; } public void deplacements(){ diff --git a/MAVENProject/src/main/java/entity/Kunai.java b/MAVENProject/src/main/java/entity/Kunai.java index c221233cabbb4d5814c6f624538648e63e8eaef3..5164ffdf880249f06130ef07c6ebb197601b8c8b 100644 --- a/MAVENProject/src/main/java/entity/Kunai.java +++ b/MAVENProject/src/main/java/entity/Kunai.java @@ -1,5 +1,6 @@ package entity; +import java.net.URL; import java.util.List; import environnement.Coordonnees; @@ -19,6 +20,7 @@ public class Kunai { private boolean disappear = false; //variable disant si le kunai doit disparaitre ou non private static final int height = 12; private static final int width = 24; + private final String sprite; public Kunai(int dir,int dmg,Coordonnees c){ coord = c; @@ -26,6 +28,17 @@ public class Kunai { damage = dmg; direction = dir; hitBox = new HitBox(coord,height,width); + + //cest la pour les sprites, remplacer Jeu.class par classedanslaquelletues.class + String fn = "Frames_perso"; + URL url = Monster.class.getClassLoader().getResource(fn); + assert url != null; + String beginPath = url.toString().substring(6)+"/"; + String d; + if (direction == 1)d = "_R1"; + else d = "_L1"; + sprite = beginPath + "character_kunai" + d + ".png"; + //************************* */ } private void deplacement(){ //deplacement du kunai @@ -91,6 +104,10 @@ public class Kunai { public static int getWidth() { return width; } + + public String getSprite() { + return sprite; + } } diff --git a/MAVENProject/src/main/java/entity/Monster.java b/MAVENProject/src/main/java/entity/Monster.java index 43d5f5805a77f880b3a636417e957aa15602f6f0..0b4f8d5d58130a23e827899cc1a56b08b8cb3554 100644 --- a/MAVENProject/src/main/java/entity/Monster.java +++ b/MAVENProject/src/main/java/entity/Monster.java @@ -11,6 +11,8 @@ import map.Obstacle; import static jeu.Jeu.getGameCharacter; import static jeu.Jeu.getObstacleTable; +import java.io.BufferedReader; +import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -24,12 +26,24 @@ public class Monster extends Entity{ Coordonnees coordInit; // coordonnees initiales PositionCollision collisionOnSide = NONE; int impulsionSaut = 0; + int nbBeforeFrameChange = 0; + int nbFrame = 1; + String monsterType = "zombie_run"; + private String sprite; + final String beginPath; public Monster(Coordonnees c, double vitesseMax,double width,double height,int atkStt,int nbLP) { super(c, vitesseMax,width,height,atkStt); maxLifePoints = nbLP; nbLifePoints = maxLifePoints; coordInit = coord; + + //cest la pour les sprites, remplacer Jeu.class par classedanslaquelletues.class + String fn = "Monstres"; + URL url = Monster.class.getClassLoader().getResource(fn); + assert url != null; + beginPath = url.toString().substring(6)+"/"; + //************************* */ } public void deplacements(){ @@ -115,6 +129,20 @@ public class Monster extends Entity{ } } + private void updateSprite() { + if (nbBeforeFrameChange == 0){ + String dir; + if (direction == 1)dir = "_R"; + else dir = "_L"; + nbFrame = nbFrame%2 + 1; + sprite = beginPath + monsterType + dir + nbFrame + ".png"; + nbBeforeFrameChange = 100; + System.out.println(sprite); + } + else nbBeforeFrameChange--; + + } + private void updateNbFrameInvincible(){ nbFramesInvincible = Math.max(0, nbFramesInvincible-1); } @@ -130,6 +158,7 @@ public class Monster extends Entity{ //updateVoisinage(); this.setHitBox(new HitBox(this.getCoord(),entityHEIGHT,entityWIDTH)); updateNbFrameInvincible(); + updateSprite(); if (death()) { int nbRand = (int)(2*Math.random()); //on cree une loi de bernouilli de parametre 1/2 if (nbRand == 0)dropHearth(); @@ -171,5 +200,10 @@ public class Monster extends Entity{ public Boolean death(){ return nbLifePoints == 0; } + + public String getSprite() { + return sprite; + } + } diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java index db4144453510efa6d1a57c1ec1d5c4c0bff978a3..9d5f5245e100e6a29e747978545554bc42f37266 100644 --- a/MAVENProject/src/main/java/jeu/Painter.java +++ b/MAVENProject/src/main/java/jeu/Painter.java @@ -1,6 +1,7 @@ package jeu; import engine.GamePainter; +import entity.Bat; import entity.Hearth; import entity.Kunai; import entity.Monster; @@ -196,7 +197,13 @@ public class Painter implements GamePainter{ //crayon.drawRect(x-300 - xCam, z-300 - zCam, 600, 600); if (HitBox.collision(gameCharacter.getHitBox(),monster.getHitBox()))crayon.setColor(Color.red); if (monster.getNbFramesInvincible() > 0)crayon.setColor(Color.black); - crayon.fillRect(x-(int)monster.getEntityWIDTH()/2 - xCam, z-(int)monster.getEntityHEIGHT()/2 - zCam, (int)monster.getEntityWIDTH(), (int)monster.getEntityHEIGHT()); + //crayon.fillRect(x-(int)monster.getEntityWIDTH()/2 - xCam, z-(int)monster.getEntityHEIGHT()/2 - zCam, (int)monster.getEntityWIDTH(), (int)monster.getEntityHEIGHT()); + if (monster instanceof Bat){ + crayon.drawImage(new ImageIcon(monster.getSprite()).getImage(),x-(int)monster.getEntityWIDTH()/2 - xCam-7,z-(int)monster.getEntityHEIGHT()/2 - zCam-3, null); + } + else{ + crayon.drawImage(new ImageIcon(monster.getSprite()).getImage(),x-(int)monster.getEntityWIDTH()/2 - xCam-25,z-(int)monster.getEntityHEIGHT()/2 - zCam-3, null); + } } } @@ -210,7 +217,8 @@ public class Painter implements GamePainter{ x = (int)kunai.getCoord().getX(); z = (int)kunai.getCoord().getZ(); if (HitBox.collision(gameCharacter.getHitBox(),kunai.getHitBox()))crayon.setColor(Color.red); - crayon.fillRect(x-Kunai.getWidth()/2 - xCam, z-Kunai.getHeight()/2 - zCam, Kunai.getWidth(), Kunai.getHeight()); + //crayon.fillRect(x-Kunai.getWidth()/2 - xCam, z-Kunai.getHeight()/2 - zCam, Kunai.getWidth(), Kunai.getHeight()); + crayon.drawImage(new ImageIcon(kunai.getSprite()).getImage(),x - xCam-20,z - zCam-10, null); } }