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