From dc37858d6d60613096001b84a5477ab88c8c3440 Mon Sep 17 00:00:00 2001 From: Louis <malterre.louis@laposte.net> Date: Fri, 25 Nov 2022 20:48:58 +0100 Subject: [PATCH] perso affiche en statique (j'ai laisse le rectangle bleu pour pouvoir le dimensionner correctement) je travaillerai son animation demain surement. classe CharacterLoader creee (pour creer le perso du coup) par contre je sais pas si c'est la classe jeu qui doit y faire appel, donc ca y est pour l'instant mais ca peut changer. LM --- .../src/main/java/entity/Character.java | 3 ++ MAVENProject/src/main/java/jeu/Jeu.java | 28 ++++++----- MAVENProject/src/main/java/jeu/Painter.java | 16 +++--- .../main/java/loaders/CharacterLoader.java | 49 +++++++++++++++++++ 4 files changed, 77 insertions(+), 19 deletions(-) create mode 100644 MAVENProject/src/main/java/loaders/CharacterLoader.java diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index b7c696d..ef49e4d 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -8,6 +8,7 @@ import environnement.HitBox; import environnement.Physique; import jeu.Jeu; + public class Character extends Entity{ private double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ @@ -18,6 +19,7 @@ public class Character extends Entity{ private final double characterWIDTH = 30; // pour l'instant je les ai renommes, ca peut changer private final double characterHEIGHT= 60; private Map<String,Double> tableCommande; //table des commandes du perso + //private BufferedImage sprite; public Character(Coordonnees c,double vitesseMax,double m,double impSaut){ @@ -28,6 +30,7 @@ public class Character extends Entity{ this.tableCommande = new HashMap<String,Double>(); tableCommande.put("CommandX",(double)0); tableCommande.put("CommandZ",(double)0); + //sprite = CharacterLoader.getImageCharacter(); } @Override diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index 42142ea..4ddbf2c 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -9,22 +9,24 @@ import java.util.Map; import entity.Character; 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) - static Character charac; + static Character gameCharacter; 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 public Jeu(String source) { BufferedReader helpReader; - + characterSkinPath = "E:\\Bureau\\Programmation\\Projet_ACL\\acl-project\\Frames_perso\\pixil-frame-0.png"; // path premiere frame /*A = new ArrayList<Double>(); n = 0;*/ - - charac = new entity.Character(new Coordonnees(200, 300), 2000, 1,600000); + gameCharacterLoader = new CharacterLoader(characterSkinPath,new Character(new Coordonnees(200, 300), 2000, 1,600000)); + gameCharacter = gameCharacterLoader.getGameCharacter(); try { helpReader = new BufferedReader(new FileReader(source)); String line; @@ -46,8 +48,8 @@ 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(charac.getCoord().getX()); - System.out.println(charac.getCoord().getZ()); + System.out.println(gameCharacter.getCoord().getX()); + System.out.println(gameCharacter.getCoord().getZ()); /*double comX,comZ; int a = 1; @@ -63,17 +65,17 @@ public class Jeu implements Game{ if (Right && Left){} else if (Right) { - comX = charac.getVitesseMax(); + comX = gameCharacter.getVitesseMax(); } else if (Left) { - comX = -charac.getVitesseMax(); + comX = -gameCharacter.getVitesseMax(); } if (Jump) { - if (charac.getCoord().getZ() < coordSol.getZ())a = 0; - else if (charac.getVitesseActuZ() == 0){comZ = charac.getImpulsionSaut();/*A.add(charac.getCoord().getZ());n++;/} + if (gameCharacter.getCoord().getZ() < coordSol.getZ())a = 0; + else if (gameCharacter.getVitesseActuZ() == 0){comZ = gameCharacter.getImpulsionSaut();/*A.add(gameCharacter.getCoord().getZ());n++;/} } else { - if (charac.getCoord().getZ() < coordSol.getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer + if (gameCharacter.getCoord().getZ() < coordSol.getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer a = 0; } else{ @@ -81,7 +83,7 @@ public class Jeu implements Game{ } }*/ - charac.evolveCharacter(); + gameCharacter.evolveCharacter(); } @Override diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java index 0c48be8..e3f101d 100644 --- a/MAVENProject/src/main/java/jeu/Painter.java +++ b/MAVENProject/src/main/java/jeu/Painter.java @@ -7,8 +7,10 @@ import environnement.Obstacle; import java.awt.*; import java.awt.image.BufferedImage; + import static environnement.HitBox.getDefaultUnit; -import static jeu.Jeu.charac; +import static jeu.Jeu.gameCharacter; +import static jeu.Jeu.gameCharacterLoader; import static jeu.Jeu.getCoordSol; public class Painter implements GamePainter{ @@ -24,7 +26,7 @@ public class Painter implements GamePainter{ public void draw(BufferedImage im) { Graphics2D crayon = (Graphics2D) im.getGraphics(); crayon.setColor(Color.blue); - drawCharacter(crayon, charac); + drawCharacter(crayon, gameCharacter,gameCharacterLoader.getImageCharacter()); drawSol(crayon); crayon.setColor(Color.red); //drawQuadrillage(crayon); @@ -40,10 +42,12 @@ public class Painter implements GamePainter{ return HEIGHT; } - private void drawCharacter(Graphics2D crayon, Character charac){ - int x = (int) charac.getCoord().getX(); - int y = (int) charac.getCoord().getZ(); - crayon.fillRect(x-15,y-30, (int) charac.getEntityWIDTH(),(int) charac.getEntityHEIGHT()); + 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); + } private void drawObstacle(Graphics2D crayon, Obstacle obstacle){ diff --git a/MAVENProject/src/main/java/loaders/CharacterLoader.java b/MAVENProject/src/main/java/loaders/CharacterLoader.java new file mode 100644 index 0000000..bf04746 --- /dev/null +++ b/MAVENProject/src/main/java/loaders/CharacterLoader.java @@ -0,0 +1,49 @@ +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 + private Character gameCharacter; // perso a creer + private String skinPath; // chemin du skin a l'instant t du jeu + //private String nameImageOfSkin; // nom de l'image du skin (le truc fonctionne comme ca) + private Image imageCharacter; + + public CharacterLoader(String path,Character charac){ + gameCharacter = charac; + skinPath = path; + imageCharacter = new ImageIcon(path).getImage(); + } + + public void refreshImage(){ + try { + imageCharacter = ImageIO.read(new File(skinPath)); + } catch (IOException e) { + + e.printStackTrace(); + } + } + + public Character getGameCharacter() { + return gameCharacter; + } + + public String getSkinPath() { + return skinPath; + } + + public Image getImageCharacter() { + return imageCharacter; + } + + public void setSkinPath(String skinPath) { + this.skinPath = skinPath; + } + + +} -- GitLab