From 5babed1078aceb0f65e0e1fe9923c4d4460cf3bb Mon Sep 17 00:00:00 2001 From: Louis <malterre.louis@laposte.net> Date: Fri, 25 Nov 2022 23:33:28 +0100 Subject: [PATCH] animation idle faite, uml a peu pres a jour LM --- ..._attack_1et3.png => Character_attack1.png} | Bin Frames_perso/Character_attack3.png | Bin 0 -> 2570 bytes MAVENProject/PlanUML.puml | 25 +++++++++++++++-- MAVENProject/src/main/java/engine/Game.java | 2 +- .../src/main/java/entity/Character.java | 4 +-- MAVENProject/src/main/java/jeu/Jeu.java | 26 ++++++++++++++++-- MAVENProject/src/main/java/jeu/Painter.java | 4 +-- .../main/java/loaders/CharacterLoader.java | 12 ++------ 8 files changed, 53 insertions(+), 20 deletions(-) rename Frames_perso/{Character_attack_1et3.png => Character_attack1.png} (100%) create mode 100644 Frames_perso/Character_attack3.png diff --git a/Frames_perso/Character_attack_1et3.png b/Frames_perso/Character_attack1.png similarity index 100% rename from Frames_perso/Character_attack_1et3.png rename to Frames_perso/Character_attack1.png diff --git a/Frames_perso/Character_attack3.png b/Frames_perso/Character_attack3.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8e144f54eb8b5d28d2a9d06b61ac8afc0e96d6 GIT binary patch literal 2570 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 Dp1Qch literal 0 HcmV?d00001 diff --git a/MAVENProject/PlanUML.puml b/MAVENProject/PlanUML.puml index 5411cfa..af88d0c 100644 --- a/MAVENProject/PlanUML.puml +++ b/MAVENProject/PlanUML.puml @@ -15,6 +15,13 @@ engine.GamePainter <|-- engine.DrawingPanel environment.Coordonnees <|-- entity.Entity entity.Character <|-- environment.Physique +loaders.CharacterLoader <|-- jeu.Jeu +jeu.Painter <|-- loaders.CharacterLoader +entity.Character <|-- jeu.Jeu +jeu.Painter <|-- entity.Character +entity.Monster <|-- environment.Physique +entity.Character <|-- loaders.CharacterLoader + interface engine.GameController { + Cmd getCommand() } @@ -73,9 +80,9 @@ class entity.Character { } class entity.Monster{ + Coordonnees positions ++ int vmax + void deplacements() + void attaque() -+ int vmax } @@ -86,6 +93,7 @@ abstract class entity.Entity{ - double entityWIDTH - double entityHEIGHT + void deplacements() ++ Coordonnes getCoord() + void attaque() } entity.Entity <|.. entity.Character @@ -105,13 +113,24 @@ class environment.Coordonnees{ + double getZ() } +class loaders.CharacterLoader{ + - Character gameCharacter + - String skinPath + - Image imageCharacter + + void refreshImage() + + Character getGameCharacter() + + String getSkinPath() + + Image getImageCharacter() + + void setSkinPath(String) +} + class jeu.Painter{ # {static} int WIDTH # {static} int HEIGHT + <<Create>> Painter() + void draw(BufferedImage) -- void drawCharacter(Graphics2D) +- void drawCharacter(Graphics2D,Character,Image) - void drawSol(Graphics2D) - void drawObstacle(Graphics2D) + int getWidth() @@ -130,6 +149,8 @@ class jeu.Jeu{ + void evolve(Cmd) - HashMap directionJeu + boolean isFinished() +- Character gameCharacter +- CharacterLoader gameCharacterLoader } class environment.Physique{ - double g diff --git a/MAVENProject/src/main/java/engine/Game.java b/MAVENProject/src/main/java/engine/Game.java index 4cb58e5..a3a4c8c 100644 --- a/MAVENProject/src/main/java/engine/Game.java +++ b/MAVENProject/src/main/java/engine/Game.java @@ -1,6 +1,6 @@ package engine; -import java.util.ArrayList; + import java.util.HashMap; /** diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index ef49e4d..26d30bf 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -46,7 +46,7 @@ public class Character extends Entity{ if ((tableCommande.get("CommandZ") == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ()))newZ = Jeu.getCoordSol().getZ(); else newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ(); - System.out.println("écart de hauteur: "+Math.abs(this.getCoord().getZ()-newZ)); + //System.out.println("écart de hauteur: "+Math.abs(this.getCoord().getZ()-newZ)); this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees @@ -56,7 +56,7 @@ public class Character extends Entity{ if ((tableCommande.get("CommandZ") == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ())) vitesseActuZ = 0; else vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta; - System.out.println("vitesse z: "+vitesseActuZ); + //System.out.println("vitesse z: "+vitesseActuZ); resetCommand(); } @Override diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index 4ddbf2c..2f55244 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -11,6 +11,7 @@ import engine.Game; import environnement.Coordonnees; import loaders.CharacterLoader; + public class Jeu implements Game{ private static Coordonnees coordSol = new Coordonnees(200,700); //coordonnees du sol (en realite juste Z nous interesse) @@ -18,11 +19,20 @@ public class Jeu implements Game{ private static Map<String,Boolean> directionJeu; static CharacterLoader gameCharacterLoader; String characterSkinPath; // jsp si c'est le jeu qui doit gerer ca, au pire vous pouvez changer + final String beginPath; + String movement; + int numberOfMovement; + int nbIterationPerFrame = 100; + int nbBeforeFramechgt = nbIterationPerFrame; public Jeu(String source) { + BufferedReader helpReader; - characterSkinPath = "E:\\Bureau\\Programmation\\Projet_ACL\\acl-project\\Frames_perso\\pixil-frame-0.png"; // path premiere frame + beginPath = "E:\\Bureau\\Programmation\\Projet_ACL\\acl-project\\Frames_perso\\"; + movement = "Character_idle"; + numberOfMovement = 1; + characterSkinPath = beginPath + movement + Integer.toString(numberOfMovement) + ".png"; // path premiere frame /*A = new ArrayList<Double>(); n = 0;*/ gameCharacterLoader = new CharacterLoader(characterSkinPath,new Character(new Coordonnees(200, 300), 2000, 1,600000)); @@ -47,9 +57,9 @@ public class Jeu implements Game{ @Override public void evolve(HashMap<String,Boolean> command) { // command est sous la forme list de Boolean qui represente les touches préssées. Voir Controller pour la compositions de cet list. - System.out.println("Execute "+command); + /*System.out.println("Execute "+command); System.out.println(gameCharacter.getCoord().getX()); - System.out.println(gameCharacter.getCoord().getZ()); + System.out.println(gameCharacter.getCoord().getZ());*/ /*double comX,comZ; int a = 1; @@ -83,7 +93,17 @@ public class Jeu implements Game{ } }*/ + gameCharacter.evolveCharacter(); + if ((nbIterationPerFrame-nbBeforeFramechgt) == nbIterationPerFrame) { // timer pour changer de frame + numberOfMovement = numberOfMovement%2 + 1; + nbBeforeFramechgt = nbIterationPerFrame; + } + else nbBeforeFramechgt--; + characterSkinPath = beginPath + movement + Integer.toString(numberOfMovement) + ".png"; + gameCharacterLoader.setSkinPath(characterSkinPath); + gameCharacterLoader.refreshImage(); + } @Override diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java index e3f101d..9002459 100644 --- a/MAVENProject/src/main/java/jeu/Painter.java +++ b/MAVENProject/src/main/java/jeu/Painter.java @@ -45,8 +45,8 @@ public class Painter implements GamePainter{ private void drawCharacter(Graphics2D crayon, Character charac,Image imageCharac){ int x = (int) gameCharacter.getCoord().getX(); int y = (int) gameCharacter.getCoord().getZ(); - crayon.fillRect(x-15,y-30, (int) gameCharacter.getEntityWIDTH(),(int) gameCharacter.getEntityHEIGHT()); - crayon.drawImage(imageCharac, x-15, y-30, null, null); + //crayon.fillRect(x-15,y-30, (int) gameCharacter.getEntityWIDTH(),(int) gameCharacter.getEntityHEIGHT()); + crayon.drawImage(imageCharac, x-30, y-60, null, null); } diff --git a/MAVENProject/src/main/java/loaders/CharacterLoader.java b/MAVENProject/src/main/java/loaders/CharacterLoader.java index bf04746..4ba4b8d 100644 --- a/MAVENProject/src/main/java/loaders/CharacterLoader.java +++ b/MAVENProject/src/main/java/loaders/CharacterLoader.java @@ -2,10 +2,6 @@ package loaders; import entity.Character; import java.awt.Image; -import java.io.File; -import java.io.IOException; - -import javax.imageio.ImageIO; import javax.swing.ImageIcon; public class CharacterLoader { // classe qui cree le perso @@ -21,12 +17,8 @@ public class CharacterLoader { // classe qui cree le perso } public void refreshImage(){ - try { - imageCharacter = ImageIO.read(new File(skinPath)); - } catch (IOException e) { - - e.printStackTrace(); - } + imageCharacter = new ImageIcon(skinPath).getImage(); + } public Character getGameCharacter() { -- GitLab