From 9c98d6d747532e24d65efe0f04cbb4276a283fe4 Mon Sep 17 00:00:00 2001 From: Louis MALTERRE <malterre.louis@laposte.net> Date: Tue, 29 Nov 2022 21:24:49 +0100 Subject: [PATCH] animations implementees LM --- MAVENProject/PlanUML.puml | 10 ++++- .../src/main/java/entity/Character.java | 11 ++++- MAVENProject/src/main/java/jeu/Jeu.java | 45 ++++++++++--------- MAVENProject/src/main/java/jeu/Painter.java | 37 +++++++++++---- 4 files changed, 69 insertions(+), 34 deletions(-) diff --git a/MAVENProject/PlanUML.puml b/MAVENProject/PlanUML.puml index 48d37f1..c16d686 100644 --- a/MAVENProject/PlanUML.puml +++ b/MAVENProject/PlanUML.puml @@ -68,6 +68,7 @@ class entity.Character { - double impulsionSaut - HashMap tableCommand - int alpha +- int nbLifePoints - double entityWIDTH - double entityHEIGHT - double vitesseActuX @@ -77,10 +78,15 @@ class entity.Character { + void getGameCommand() + void attaque() + void evolveCharacter() ++ void collisionsGestion() ++ int getNbLifePoints() ++ void setNbLifePoints(int) ++ int getAlpha() ++ double getM() ++ double getVitesseActuX() ++ double getVitesseActuZ() } class entity.Monster{ -+ Coordonnees positions -+ int vmax + void deplacements() + void attaque() } diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index f992300..a44fe55 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -15,6 +15,7 @@ public class Character extends Entity{ private double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ private double vitesseActuZ = 0; private final double impulsionSaut; + private int nbLifePoints = 3; private double masse; private int alpha = 1; // gere les collisions avec le sol private int beta = 1; // gere les collisions avec les murs @@ -38,7 +39,7 @@ public class Character extends Entity{ } @Override - public void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction + public void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 (en l'air) ou 1 (au sol) en fonction if (this.getCoord().getZ()>= 700 ) { alpha = 1; } @@ -103,8 +104,8 @@ public class Character extends Entity{ public void evolveCharacter(){ getGameCommand(); - collisionGestion(); deplacements(); + collisionGestion(); resetCommand(); this.setHitBox(new HitBox(this.getCoord(),entityHEIGHT,entityWIDTH)); // mise à jour moins crade pour l'instant } @@ -138,5 +139,11 @@ public class Character extends Entity{ public int getAlpha() { return alpha; } + public int getNbLifePoints() { + return nbLifePoints; + } + public void setNbLifePoints(int nbLifePoints) { + this.nbLifePoints = nbLifePoints; + } } diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index ee9b09b..bb72e5b 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -115,7 +115,6 @@ public class Jeu implements Game{ directionJeu.replace("Attack",command.get("Attack")); boolean Right = command.get("Right"); boolean Left = command.get("Left"); - boolean Jump = command.get("Jump"); boolean Attack = command.get("Attack"); @@ -124,6 +123,30 @@ public class Jeu implements Game{ gameCharacter.evolveCharacter(); //animation du perso dans le jeu (definir la bonne frame a cet instant) + animation(Attack, Right, Left); + + } + + @Override + public boolean isFinished() { + // le jeu n'est jamais fini + return false; + } + + + public static Map<String, Boolean> getDirectionJeu() { + return directionJeu; + } + + public static Obstacle getSol() { + return sol; + } + + public static List<Obstacle> getObstacleTable() { + return obstacleTable; + } + + private void animation(Boolean Attack,Boolean Right,Boolean Left){ if (Attack) { movement = "character_attack"; characterAttacking = true; @@ -172,26 +195,6 @@ public class Jeu implements Game{ characterSkinPath = beginPath + movement + numberOfMovement + ".png"; gameCharacterLoader.setSkinPath(characterSkinPath); gameCharacterLoader.refreshImage(); - - } - - @Override - public boolean isFinished() { - // le jeu n'est jamais fini - return false; - } - - - public static Map<String, Boolean> getDirectionJeu() { - return directionJeu; - } - - public static Obstacle getSol() { - return sol; - } - - public static List<Obstacle> getObstacleTable() { - return obstacleTable; } } \ 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 b1747a0..8c8fe70 100644 --- a/MAVENProject/src/main/java/jeu/Painter.java +++ b/MAVENProject/src/main/java/jeu/Painter.java @@ -10,6 +10,10 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.util.HashMap; +import javax.swing.ImageIcon; + +import java.net.URL; + import static environnement.HitBox.collision; import static jeu.Jeu.*; @@ -42,18 +46,11 @@ public class Painter implements GamePainter{ drawMap(crayon); drawSol(crayon); drawObstacleBis(crayon,test,"plateforme.png"); + drawLifePoints(crayon); } - @Override - public int getWidth() { - return WIDTH; - } - - @Override - public int getHeight() { - return HEIGHT; - } + private void drawCharacter(Graphics2D crayon,Image imageCharac){ int x = (int) gameCharacter.getCoord().getX(); @@ -63,6 +60,18 @@ public class Painter implements GamePainter{ } + private void drawLifePoints(Graphics2D crayon){ + String fn = "Frames_perso"; + URL url = Jeu.class.getClassLoader().getResource(fn); + assert url != null; + String beginPath = url.toString().substring(6)+"/"; + Image filledHeart = new ImageIcon(beginPath+"character_health2.png").getImage(); + Image emptyHeart = new ImageIcon(beginPath+"character_health1.png").getImage(); + for (int i=1;i<=gameCharacter.getNbLifePoints();i++){ + crayon.drawImage(filledHeart, 45*i-10, 10, null, null); + } + } + private void drawObstacle(Graphics2D crayon, Obstacle obstacle){ HashMap<String, Coordonnees> extremites = obstacle.getHitbox().getExtremites(); Coordonnees hd = extremites.get("HautDroite"); @@ -104,4 +113,14 @@ public class Painter implements GamePainter{ crayon.drawImage(loader.getImageObstacle(), x - (int) hitBox.getWidth()/2,z - (int) hitBox.getHeight()/2,null,null); } + @Override + public int getWidth() { + return WIDTH; + } + + @Override + public int getHeight() { + return HEIGHT; + } + } -- GitLab