From 6e4cbb1c61b4f8e0af00b63e2c5c47094c416b8b Mon Sep 17 00:00:00 2001 From: Louis <malterre.louis@laposte.net> Date: Tue, 27 Dec 2022 18:23:59 +0100 Subject: [PATCH] sprites bat kunai et monster implementes LM --- MAVENProject/src/main/java/entity/Bat.java | 1 + MAVENProject/src/main/java/entity/Kunai.java | 17 ++++++++++ .../src/main/java/entity/Monster.java | 34 +++++++++++++++++++ MAVENProject/src/main/java/jeu/Painter.java | 12 +++++-- 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/MAVENProject/src/main/java/entity/Bat.java b/MAVENProject/src/main/java/entity/Bat.java index bddaf42..773a7af 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 c221233..5164ffd 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 43d5f58..0b4f8d5 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 db41444..9d5f524 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); } } -- GitLab