diff --git a/MAVENProject/src/main/java/engine/DrawingPanel.java b/MAVENProject/src/main/java/engine/DrawingPanel.java index 306a968c8b58026923b627343e9c0ed224a4db62..8841696ffb7f1c4fd042c16f3974136bcf58eb22 100644 --- a/MAVENProject/src/main/java/engine/DrawingPanel.java +++ b/MAVENProject/src/main/java/engine/DrawingPanel.java @@ -7,6 +7,7 @@ package engine; import java.awt.Dimension; import java.awt.Graphics; import java.awt.image.BufferedImage; +import java.io.Serial; import javax.swing.JPanel; @@ -15,12 +16,13 @@ public class DrawingPanel extends JPanel { /** * */ + @Serial private static final long serialVersionUID = 1L; /** * la clase chargee de Dessiner */ - private GamePainter painter; + private final GamePainter painter; /** * image suivante est l'image cachee sur laquelle dessiner @@ -35,16 +37,17 @@ public class DrawingPanel extends JPanel { /** * la taille des images */ - private int width, height; + private final int width; + private final int height; /** * constructeur Il construit les images pour doublebuffering ainsi que le * Panel associe. Les images stockent le painter et on demande au panel la * mise a jour quand le painter est fini * - * @param width + * width * largeur de l'image - * @param height + * height * hauteur de l'image */ public DrawingPanel(GamePainter painter) { diff --git a/MAVENProject/src/main/java/engine/Game.java b/MAVENProject/src/main/java/engine/Game.java index a3a4c8c7174a32057e8c411e24880320fc854835..a6da5ec97bc00c4d67c1767c0263e3db0569b503 100644 --- a/MAVENProject/src/main/java/engine/Game.java +++ b/MAVENProject/src/main/java/engine/Game.java @@ -17,11 +17,11 @@ public interface Game { * @param userCmd * commande utilisateur */ - public void evolve(HashMap<String,Boolean> userCmd); + void evolve(HashMap<String,Boolean> userCmd); /** * @return true si et seulement si le jeu est fini */ - public boolean isFinished(); + boolean isFinished(); } diff --git a/MAVENProject/src/main/java/engine/GameController.java b/MAVENProject/src/main/java/engine/GameController.java index b4f8e56a1629377d13c4da62e71132daad6b26f7..279c18d396680ea0981223509e33455bd2b97888 100644 --- a/MAVENProject/src/main/java/engine/GameController.java +++ b/MAVENProject/src/main/java/engine/GameController.java @@ -17,6 +17,6 @@ public interface GameController extends KeyListener { * * @return commande faite par le joueur */ - public HashMap<String,Boolean> getCommand(); + HashMap<String,Boolean> getCommand(); } diff --git a/MAVENProject/src/main/java/engine/GameEngineGraphical.java b/MAVENProject/src/main/java/engine/GameEngineGraphical.java index 0d4e44b77a14be3f3ff4ff1fa074e84d9c9388c8..8b1456b831ef6d844c86306a596cec0184490e44 100644 --- a/MAVENProject/src/main/java/engine/GameEngineGraphical.java +++ b/MAVENProject/src/main/java/engine/GameEngineGraphical.java @@ -13,24 +13,19 @@ public class GameEngineGraphical { /** * le game a executer */ - private Game game; + private final Game game; public int i; /** * l'afficheur a utiliser pour le rendu */ - private GamePainter gamePainter; + private final GamePainter gamePainter; /** * le controlleur a utiliser pour recuperer les commandes */ - private GameController gameController; - - /** - * l'interface graphique - */ - private GraphicalInterface gui; + private final GameController gameController; /** * construit un moteur @@ -56,7 +51,10 @@ public class GameEngineGraphical { public void run() throws InterruptedException { // creation de l'interface graphique - this.gui = new GraphicalInterface(this.gamePainter,this.gameController); + /** + * l'interface graphique + */ + GraphicalInterface gui = new GraphicalInterface(this.gamePainter, this.gameController); boolean x = true; // boucle de game while (!this.game.isFinished() || x) { @@ -68,7 +66,7 @@ public class GameEngineGraphical { i +=1; if ( i == 5){ i = 0; - this.gui.paint(); + gui.paint(); x = false; } // met en attente diff --git a/MAVENProject/src/main/java/engine/GamePainter.java b/MAVENProject/src/main/java/engine/GamePainter.java index b66f5a3c26d72fb91a3786665f4359347c50006f..eacfc2e3a81694f9c442ad54aa1d1163c9b77a87 100644 --- a/MAVENProject/src/main/java/engine/GamePainter.java +++ b/MAVENProject/src/main/java/engine/GamePainter.java @@ -17,6 +17,6 @@ public interface GamePainter { * @param image * image sur laquelle dessiner */ - public abstract void draw(BufferedImage image); + void draw(BufferedImage image); } diff --git a/MAVENProject/src/main/java/engine/GraphicalInterface.java b/MAVENProject/src/main/java/engine/GraphicalInterface.java index 2bb97ad031e86ab574746547f7298978b3002398..e81474a942fa6dc8bf2ba4baae88d414c56b0b2f 100644 --- a/MAVENProject/src/main/java/engine/GraphicalInterface.java +++ b/MAVENProject/src/main/java/engine/GraphicalInterface.java @@ -15,7 +15,7 @@ public class GraphicalInterface { /** * le Panel pour l'afficheur */ - private DrawingPanel panel; + private final DrawingPanel panel; /** * la construction de l'interface graphique: JFrame avec panel pour le game diff --git a/MAVENProject/src/main/java/engine/MenuPanel.java b/MAVENProject/src/main/java/engine/MenuPanel.java index 0fbc39b81719b6d738ef075bffbc45d35927030a..956c7681aa128cea9d2c0d77a39345a28cd3df72 100644 --- a/MAVENProject/src/main/java/engine/MenuPanel.java +++ b/MAVENProject/src/main/java/engine/MenuPanel.java @@ -18,8 +18,6 @@ public class MenuPanel { private JButton button1; private JButton button2; private JButton button3; - private JButton button7; - private JButton button8; private static boolean shootingCharacter = false; private static boolean normalCharacter = false; @@ -49,9 +47,6 @@ public class MenuPanel { normalCharacter = false; } - private Panel gameMenu; - private Panel gameChoice; - private Panel gameChoice2; private Panel gameFin; private static int level; @@ -73,7 +68,7 @@ public class MenuPanel { } public void menudebut() { - gameMenu = new Panel(); + Panel gameMenu = new Panel(); button = new JButton("Nouvelle partie"); gameMenu.add(button, BorderLayout.CENTER); button.addActionListener(e -> lancementpartie = true); @@ -98,7 +93,7 @@ public class MenuPanel { JLabel label = new JLabel("<html>déplacement touches directionnelles<br>attaque touche 'q'<br>saut touche 'espace'</html>"); label.setFont(new Font("Arial", Font.BOLD, 24)); label.setForeground(Color.RED); - gameChoice = new Panel(); + Panel gameChoice = new Panel(); gameChoice.add(label); button1 = new JButton("Personnage Distance"); button2 = new JButton("Personnage Melee"); @@ -124,9 +119,9 @@ public class MenuPanel { public void menuChoice2(){ level = 0; - gameChoice2 = new Panel(); - button7 = new JButton("map 1"); - button8 = new JButton("map 2"); + Panel gameChoice2 = new Panel(); + JButton button7 = new JButton("map 1"); + JButton button8 = new JButton("map 2"); gameChoice2.add(button7,BorderLayout.CENTER); gameChoice2.add(button8,BorderLayout.CENTER); button7.addActionListener(e -> level= 1); diff --git a/MAVENProject/src/main/java/entity/Attack.java b/MAVENProject/src/main/java/entity/Attack.java index bfedcf6dedfdb75f1063c1600fd161447850d775..c89aab024708fda02c5e865adac75101398d03e8 100644 --- a/MAVENProject/src/main/java/entity/Attack.java +++ b/MAVENProject/src/main/java/entity/Attack.java @@ -5,13 +5,11 @@ import environnement.HitBox; public class Attack { - int damage; - Coordonnees coordCentre; - HitBox hitBox; + final int damage; + final HitBox hitBox; public Attack(int dmg,Coordonnees c,HitBox hb){ damage = dmg; - coordCentre = c; hitBox = hb; } diff --git a/MAVENProject/src/main/java/entity/Bat.java b/MAVENProject/src/main/java/entity/Bat.java index eb95a76a0db96b1d62ebbbdd2b32c3175a07a3b5..3c0445930bad26e26117394115aad5d26dbf128e 100644 --- a/MAVENProject/src/main/java/entity/Bat.java +++ b/MAVENProject/src/main/java/entity/Bat.java @@ -6,8 +6,7 @@ import static jeu.Jeu.getGameCharacter; public class Bat extends Monster{ private int directionZ = 1; //meme principe que direction pour x - private final double vitesseMaxZ = 1000; - + public Bat(Coordonnees c,int atkStt,int nbLP){ super(c, 1000, 20, 30, atkStt, nbLP); coordInit = coord; @@ -32,7 +31,8 @@ public class Bat extends Monster{ //actualisation des coordonnees double newX = coord.getX() + direction*vitesseMax*delta; - double newZ = coord.getZ() + directionZ*vitesseMaxZ*delta; + double vitesseMaxZ = 1000; + double newZ = coord.getZ() + directionZ* vitesseMaxZ *delta; coord = new Coordonnees(newX, newZ); } diff --git a/MAVENProject/src/main/java/entity/Boss.java b/MAVENProject/src/main/java/entity/Boss.java index 42e0d3538a28f31551af248e3f670e7b0c073bc0..ec15b17b5e9a7d7b4359156b415169c8a79d8eb9 100644 --- a/MAVENProject/src/main/java/entity/Boss.java +++ b/MAVENProject/src/main/java/entity/Boss.java @@ -16,7 +16,6 @@ public class Boss extends Monster{ private int impulsionSaut = 0; private String move = "_run"; - private String lastMove = move; public Boss(Coordonnees c, double vitesseMax,double width,double height,int atkStt,int nbLP){ super(c, vitesseMax, width, height, atkStt, nbLP); @@ -55,7 +54,7 @@ public class Boss extends Monster{ public void collisionGestion(){ List<Obstacle> listeObstaclesInVoisinage = getObstacleTable(); //stocke l'obstacle avec lequel il y a eu collision - HashMap<Obstacle,PositionCollision> collisionsPresentes = new HashMap<Obstacle,PositionCollision>(); + HashMap<Obstacle,PositionCollision> collisionsPresentes = new HashMap<>(); //recupere les collisions for (int i=0;i<listeObstaclesInVoisinage.size();i++) { @@ -115,8 +114,8 @@ public class Boss extends Monster{ } private void updateSprite(){ - - lastMove = move; + + String lastMove = move; String dir = "_L"; if (isAttacking >= 1 && isAttacking <=200){ @@ -130,7 +129,7 @@ public class Boss extends Monster{ } - if (move != lastMove){ + if (!move.equals(lastMove)){ nbBeforeFrameChange = 0; nbFrame = 1; } diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index d78ae18e23f52eac402a905f84e15ff2aee5eaab..662e00f5ba3d41ce5db68c68eeb3fc998a282f46 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -9,17 +9,14 @@ import java.util.Map; import environnement.Coordonnees; import environnement.HitBox; import environnement.Physique; -import static environnement.PositionCollision.*; import environnement.PositionCollision; import jeu.Jeu; import map.Obstacle; import map.Coffre; -import map.LevelManager; - +import static environnement.PositionCollision.*; import static jeu.Jeu.getLevelmanager; import static jeu.Jeu.getObstacleTable; -//import static jeu.Jeu.gameCharacter; public class Character extends Entity{ @@ -27,12 +24,11 @@ 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 double masse; + private final double masse; public int key; - protected Map<String,Double> tableCommande; //table des commandes du perso + final protected Map<String,Double> tableCommande; //table des commandes du perso private boolean breakPorte=false; private boolean brokenPorte=false; - //private Obstacle obstacleBeneath = Jeu.sol; //private BufferedImage sprite; @@ -77,7 +73,7 @@ public class Character extends Entity{ void collisionGestion(){ List<Obstacle> listeObstaclesInVoisinage = getObstacleTable(); //stocke l'obstacle avec lequel il y a eu collision - HashMap<Obstacle,PositionCollision> collisionsPresentes = new HashMap<Obstacle,PositionCollision>(); + HashMap<Obstacle,PositionCollision> collisionsPresentes = new HashMap<>(); //recupere les collisions for (int i=0;i<listeObstaclesInVoisinage.size();i++) { @@ -106,21 +102,7 @@ public class Character extends Entity{ break; } } - /*for (Obstacle obs : listeObstaclesInVoisinage){ //on cherche l'obstacle en-dessous du perso - if (obs.getHitbox().getExtremites().get("HautGauche").getZ() <= obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getZ() && obs.getHitbox().getExtremites().get("HautGauche").getZ() >= hitBox.getExtremites().get("BasDroite").getZ()){ - obstacleBeneath = obs; - } - } - - if (collisionsPresentes.get(obstacleBeneath) == BAS && tableCommande.get("CommandAttack") == 0){ - this.vitesseActuZ = 0; - this.setCoord(new Coordonnees(this.getCoord().getX(), obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2-1)); - alpha = 1; - onGround = true; - }*/ - - //} //on gere les collisions laterales et celle du haut for (int i=0;i<collisionsPresentes.size();i++){ @@ -157,7 +139,7 @@ public class Character extends Entity{ } } } - if (key==3 && brokenPorte==false){ + if (key==3 && !brokenPorte){ if (HitBox.collision(this.getHitBox(),Jeu.getObstacleTable().get(getLevelmanager().getIndexPorte()).getHitbox())) { breakPorte = true; brokenPorte = true; @@ -230,11 +212,6 @@ public class Character extends Entity{ void updateNbFrameInvincible(){ nbFramesInvincible = Math.max(0, nbFramesInvincible-1); } - - public double getVitesseActuX() { - return vitesseActuX; - } - public double getVitesseActuZ() { return vitesseActuZ; } @@ -242,14 +219,6 @@ public class Character extends Entity{ return breakPorte; } - public double getM() { - return masse; - } - - public double getImpulsionSaut() { - return impulsionSaut; - } - protected void updateVoisinage(){ voisinage = new HitBox(coord, 1000, 1000); } @@ -262,7 +231,4 @@ public class Character extends Entity{ return tableCommande; } - public Character clone(){ - return this; - } } diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java index 578d715ce1f7798a0ac598568418c58b4909f363..5abd3214e4723dd87560d85612f6b6909902a5e6 100644 --- a/MAVENProject/src/main/java/entity/Entity.java +++ b/MAVENProject/src/main/java/entity/Entity.java @@ -17,7 +17,7 @@ public abstract class Entity { Coordonnees oldCoord; final double vitesseMax; HitBox hitBox; - int attackStat; // nb de pv enleves par attaque + final int attackStat; // nb de pv enleves par attaque int maxLifePoints = 5; int nbLifePoints = maxLifePoints; final double entityWIDTH; @@ -25,7 +25,7 @@ public abstract class Entity { int alpha = 1; // gere les collisions avec le sol HitBox voisinage; int direction = 1; // direction selon l'axe des x, -1 pour la gauche et 1 pour la droite - List<PositionCollision> obstacleTableCollision = new ArrayList<>(); + final List<PositionCollision> obstacleTableCollision = new ArrayList<>(); int nbFramesInvincible = 0; int nbMaxFramesInvicible; @@ -67,10 +67,6 @@ public abstract class Entity { return entityHEIGHT; } - public Coordonnees getOldCoord() { - return oldCoord; - } - public HitBox getHitBox() { return hitBox; } @@ -89,10 +85,6 @@ public abstract class Entity { this.hitBox = hitBox; } - public double getVitesseMax() { - return vitesseMax; - } - public int getMaxLifePoints() { return maxLifePoints; } @@ -100,12 +92,6 @@ public abstract class Entity { public int getAlpha() { return alpha; } - - public int getAttackStat() { - return attackStat; - } - - public List<PositionCollision> getObstacleTableCollision() { return obstacleTableCollision; diff --git a/MAVENProject/src/main/java/entity/Hearth.java b/MAVENProject/src/main/java/entity/Hearth.java index 8ffc2f68bf31e9e434f30bac777feeab9e011f47..a054b7a060265642e6fae9df1c3c4bf38a05c345 100644 --- a/MAVENProject/src/main/java/entity/Hearth.java +++ b/MAVENProject/src/main/java/entity/Hearth.java @@ -10,14 +10,12 @@ import static jeu.Jeu.getHearthList; import java.util.List; public class Hearth { - private HitBox hitBox; - private Coordonnees coord; - private int width = 20; - private int height = 20; + private final HitBox hitBox; + private final int width = 20; + private final int height = 20; public Hearth(Coordonnees coordinates){ - coord = coordinates; - hitBox = new HitBox(coord, height, width); + hitBox = new HitBox(coordinates, height, width); } private void heal(){ @@ -31,26 +29,14 @@ public class Hearth { return hitBox; } - public int getWidth() { - return width; - } - - public int getHeight() { - return height; - } - public static void evolveHearths(){ //on fait heal tous les coeurs int k = 0; List<Hearth> testList = getHearthList(); //necessaire pour l evolution de la bouble while while (k < getHearthList().size()) { //on sauvegarde la liste des coeurs avant de faire heal (ou non) le coeur a l indice k - testList = getHearthList(); //on le fait heal (ou non) getHearthList().get(k).heal(); - //si il a heal, il a alors disparu de la liste, donc les tailles ne sont plus les memes, on ne fait donc rien - if (testList.size() == getHearthList().size()); - //sinon, les tailles sont les memes, on passe donc au coeur suivant - k++; + k++; } } diff --git a/MAVENProject/src/main/java/entity/Kunai.java b/MAVENProject/src/main/java/entity/Kunai.java index 5164ffdf880249f06130ef07c6ebb197601b8c8b..b799213cec85053998d10d0bf2dc04e35a20cc66 100644 --- a/MAVENProject/src/main/java/entity/Kunai.java +++ b/MAVENProject/src/main/java/entity/Kunai.java @@ -13,7 +13,6 @@ import static jeu.Jeu.getMonsterList; public class Kunai { private final int direction; //1 si vers la droite, -1 si vers la gauche private final int damage; - private final double vitesse = 5; private HitBox hitBox; private Coordonnees coord; private final Coordonnees coordInit; //coordonnees initiales @@ -42,7 +41,8 @@ public class Kunai { } private void deplacement(){ //deplacement du kunai - double newX = coord.getX() + direction*vitesse; + double vitesse = 5; + double newX = coord.getX() + direction* vitesse; this.coord = new Coordonnees(newX, this.coord.getZ()); } @@ -97,10 +97,6 @@ public class Kunai { return hitBox; } - public static int getHeight() { - return height; - } - public static int getWidth() { return width; } diff --git a/MAVENProject/src/main/java/entity/Monster.java b/MAVENProject/src/main/java/entity/Monster.java index 96fb390b517858d7e5e6318dc55c970680081e4b..1d3f157ede7788fdc189887e4c8abd1ed7f549dc 100644 --- a/MAVENProject/src/main/java/entity/Monster.java +++ b/MAVENProject/src/main/java/entity/Monster.java @@ -23,8 +23,6 @@ public class Monster extends Entity{ Obstacle obstacleBeneath = Jeu.getSol(); //obstacle en dessous int isAttacking = 0;//pour qu'il s'arrete si il attaque Coordonnees coordInit; // coordonnees initiales - PositionCollision collisionOnSide = NONE; - int impulsionSaut = 0; int nbBeforeFrameChange = 0; int nbFrame = 1; String monsterType = "zombie_run"; diff --git a/MAVENProject/src/main/java/entity/ShootingCharacter.java b/MAVENProject/src/main/java/entity/ShootingCharacter.java index 8f5412d3e88aee87f0764e9fd78e99f1cdbacf1c..d4f7a3dc6959b4e1ed50af0b0c82f8ccf15c2424 100644 --- a/MAVENProject/src/main/java/entity/ShootingCharacter.java +++ b/MAVENProject/src/main/java/entity/ShootingCharacter.java @@ -8,7 +8,7 @@ import jeu.Jeu; public class ShootingCharacter extends Character{ private int hasAttacked = 0; //varialbe disant si il a deja attaque, il ne peut attaque que toutes les deux frames, ainsi il ne peut attaquer que si = 0 - private int stockMaxKunai = 10; + private final int stockMaxKunai = 10; private int stockKunai = stockMaxKunai; private int kunaiReloading = 0; //temps de rechargement des kunais public ShootingCharacter(Coordonnees c, double vitesseMax, double m, double impSaut){ @@ -36,8 +36,5 @@ public class ShootingCharacter extends Character{ stockKunai = Math.min(stockKunai+1, stockMaxKunai); } kunaiReloading = (kunaiReloading+1)%300; - if (stockKunai == stockMaxKunai) { //pour apprecier la duree de rechargement totale - //System.out.println("yo"); - } } } diff --git a/MAVENProject/src/main/java/jeu/Controller.java b/MAVENProject/src/main/java/jeu/Controller.java index 52e12a14d17008c163397a282bdc09c50796a451..7350856a42b609ae19089fecb3eb6ca546f8bc69 100644 --- a/MAVENProject/src/main/java/jeu/Controller.java +++ b/MAVENProject/src/main/java/jeu/Controller.java @@ -20,7 +20,7 @@ public class Controller implements GameController{ public Controller() { isRightPressed = false; isLeftPressed = false; isSpacePressed = false; isLeftCLickPressed = false; // pour attaquer sur clique gauche - // pour l'instant faut appuyer sur Q mais c'est a changer + // pour l'instant faut appuyer sur Q, mais c'est à changer } /** * getCommand retourne une liste de booleans sous la forme [isRightPressed, isLeftPressed, isSpacePressed] diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index d450c10cffef8ff22695e02a9d9dd0dd5216e9ea..41dc12c08669fa638675c28e16bf66e61baa001e 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -55,7 +55,7 @@ public class Jeu implements Game{ //gere le chgt de frame int numberOfMovement; - int nbIterationPerFrame = 50; + final int nbIterationPerFrame = 50; int nbBeforeFramechgt = nbIterationPerFrame; //private boolean characterNotMoving = true; @@ -93,8 +93,6 @@ public class Jeu implements Game{ previousMovement = movement; numberOfMovement = 1; characterSkinPath = beginPath + movement + numberOfMovement + ".png"; // path premiere frame - /*A = new ArrayList<Double>(); - n = 0;*/ try { @@ -139,21 +137,10 @@ public class Jeu implements Game{ - /*obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(300,550),32,128))); - obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(800, 625),150,50))); - obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(600, 662.5),75,50))); - obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(450, 400),32,128)));*/ - //on genere la table des coffres coffreTable = levelManager.generateCoffreTable(); - //on met des monstres, faut supp la pour table monstres - /*monsterList.add(new Monster(new Coordonnees(1000, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,5)); - monsterList.add(new Monster(new Coordonnees(500, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,5)); - monsterList.add(new Monster(new Coordonnees(100, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,5)); - monsterList.add(new Monster(new Coordonnees(320, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,5)); - monsterList.add(new Bat(new Coordonnees(1500, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1, 3)); - monsterList.add(new Boss(new Coordonnees(3000, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 500, 90, 180, 3, 50));*/ + //on charge le perso (a la fin du constructeur, cest important par rapport a obstacleTable, sinon y'a des pbs de "causalite") //regarde le choix du personnage if (engine.MenuPanel.isShootingCharacter()) { @@ -231,12 +218,8 @@ public class Jeu implements Game{ @Override public boolean isFinished() { - if(gameCharacter.death() || getMonsterList().get(levelManager.getIndexBoss()).death()){ - hearthList.clear(); - return true; - } + return gameCharacter.death() || getMonsterList().get(levelManager.getIndexBoss()).death(); // le jeu n'est jamais fini - return false; } private void animation(Boolean Attack,Boolean Right,Boolean Left){ @@ -254,7 +237,7 @@ public class Jeu implements Game{ else if (Right || Left){ movement = "character_run"; } - else if (!Right && !Left){ + else { movement = "character_idle"; //ca changera quand j'aurai les nouvelles frames } diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java index 7af42fc84084bdf0fab36093bd6aedb06ac9c36c..79f951ebd833c38110276ac0dac5c7407d64f7e9 100644 --- a/MAVENProject/src/main/java/jeu/Painter.java +++ b/MAVENProject/src/main/java/jeu/Painter.java @@ -26,11 +26,8 @@ import static jeu.Jeu.*; public class Painter implements GamePainter{ - //protected static final int WIDTH = TILES_SIZE*TILES_IN_WIDTH; - //protected static final int HEIGHT = TILES_SIZE*TILES_IN_HEIGHT; protected static final int WIDTH =1500; protected static final int HEIGHT=750; - private static Coordonnees coordonneesCam; public int xCam; public int zCam; private final int decalage = 255; // decalage Cam bas pour perso @@ -48,9 +45,8 @@ public class Painter implements GamePainter{ String fn = "Obstacles"; URL url = Painter.class.getClassLoader().getResource(fn); assert url != null; - int placeX = -10; String beginPath = url.toString().substring(6)+"/"; - crayon.drawImage(new ImageIcon(beginPath+"background.png").getImage(), 0-xCam, 0-zCam, null, null); + crayon.drawImage(new ImageIcon(beginPath+"background.png").getImage(), -xCam, -zCam, null, null); drawMap(crayon); drawSol(crayon); @@ -65,8 +61,6 @@ public class Painter implements GamePainter{ private void drawCharacter(Graphics2D crayon,Image imageCharac){ if (gameCharacter.getNbFramesInvincible() > 0)crayon.setColor(Color.black); - //crayon.fillRect(WIDTH/2-(int) gameCharacter.getEntityWIDTH()/2,HEIGHT/2-(int) gameCharacter.getEntityHEIGHT()/2+decalage, (int) gameCharacter.getEntityWIDTH(),(int) gameCharacter.getEntityHEIGHT()); - //crayon.drawRect(WIDTH/2-500,WIDTH/2-500, 1000,1000); if (gameCharacter.getDirection() == 1){ crayon.drawImage(imageCharac, WIDTH/2- (int) gameCharacter.getEntityWIDTH()/2-10, HEIGHT/2 - (int) gameCharacter.getEntityHEIGHT()/2-3+decalage, null, null); } @@ -103,9 +97,6 @@ public class Painter implements GamePainter{ for (Hearth hearth : getHearthList()){ HashMap<String, Coordonnees> extremites = hearth.getHitBox().getExtremites(); Coordonnees hd = extremites.get("HautDroite"); - /*Coordonnees bd = extremites.get("BasDroite"); - Coordonnees hg = extremites.get("HautGauche"); - Coordonnees bg = extremites.get("BasGauche");*/ //crayon.fillRect((int)hg.getX()-xCam, (int)hg.getZ()-zCam, hearth.getWidth(), hearth.getHeight()); //on dessine les coeurs drop @@ -118,19 +109,6 @@ public class Painter implements GamePainter{ crayon.drawImage(new ImageIcon(beginPath+"heart.png").getImage(), (int)hd.getX()-xCam-20, (int)hd.getZ()-zCam, null,null); } } - - private void drawObstacle(Graphics2D crayon, Obstacle obstacle){ - HashMap<String, Coordonnees> extremites = obstacle.getHitbox().getExtremites(); - Coordonnees hd = extremites.get("HautDroite"); - Coordonnees bd = extremites.get("BasDroite"); - Coordonnees hg = extremites.get("HautGauche"); - Coordonnees bg = extremites.get("BasGauche"); - //if (HitBox.collision(gameCharacter.getVoisinage(), obstacle.getHitbox()))crayon.setColor(Color.green); - crayon.drawLine((int)hd.getX() - xCam,(int)hd.getZ() - zCam,(int)bd.getX() - xCam,(int)bd.getZ() - zCam); - crayon.drawLine((int)bd.getX() - xCam,(int)bd.getZ() - zCam,(int)bg.getX() - xCam,(int)bg.getZ() - zCam); - crayon.drawLine((int)bg.getX() - xCam,(int)bg.getZ() - zCam,(int)hg.getX() - xCam,(int)hg.getZ() - zCam); - crayon.drawLine((int)hg.getX() - xCam,(int)hg.getZ() - zCam,(int)hd.getX() - xCam,(int)hd.getZ() - zCam); - } private void drawObstacleBis(Graphics2D crayon, Obstacle obstacle, BufferedImage bufferedImage){ ObstacleLoader loader = new ObstacleLoader(obstacle,bufferedImage); HitBox hitBox = loader.getObstacle().getHitbox(); @@ -140,7 +118,6 @@ public class Painter implements GamePainter{ } private void drawCoffre(Graphics2D crayon, Coffre coffre){ - HashMap<String, Coordonnees> extremites = coffre.getHitbox().getExtremites(); Coordonnees coffreCenter = coffre.getHitbox().getCentre(); crayon.drawImage(coffre.getImage(), (int)coffreCenter.getX() - (int) coffre.getHitbox().getWidth()/2 -xCam,(int) coffreCenter.getZ() - (int) coffre.getHitbox().getHeight()/2 -zCam,null,null); @@ -171,14 +148,6 @@ public class Painter implements GamePainter{ } } - - /*private void drawCoffreBis(Graphics2D crayon, Coffre coffre, String nom){ - CoffreLoader loader = new CoffreLoader(coffre,nom); - HitBox hitBox = loader.getCoffre().getHitbox(); - int z = (int) hitBox.getCentre().getZ(); - int x = (int) hitBox.getCentre().getX(); - crayon.drawImage(loader.getImageCoffre(), x - (int) hitBox.getWidth()/2,z - (int) hitBox.getHeight()/2,null,null); - }*/ private void drawMonsters(Graphics2D crayon){ int x; @@ -218,7 +187,7 @@ public class Painter implements GamePainter{ } private void cameraUse(){ - coordonneesCam = gameCharacter.getCoord(); + Coordonnees coordonneesCam = gameCharacter.getCoord(); xCam = -WIDTH/2 + (int) coordonneesCam.getX(); zCam = -HEIGHT/2 +(int) coordonneesCam.getZ()-decalage; } diff --git a/MAVENProject/src/main/java/loaders/CharacterLoader.java b/MAVENProject/src/main/java/loaders/CharacterLoader.java index 02c104e072ebadc444b3a0c81fa3e2b542e911c5..d5e76b576c1b31ba67c5390e4e93d0aaf92bea2a 100644 --- a/MAVENProject/src/main/java/loaders/CharacterLoader.java +++ b/MAVENProject/src/main/java/loaders/CharacterLoader.java @@ -26,14 +26,6 @@ public class CharacterLoader { // classe qui cree le perso } - public Character getGameCharacter() { - return gameCharacter; - } - - public String getSkinPath() { - return skinPath; - } - public Image getImageCharacter() { return imageCharacter; } diff --git a/MAVENProject/src/main/java/loaders/LoadSave.java b/MAVENProject/src/main/java/loaders/LoadSave.java index 123e5b3c59975ebb343a65672f24701b74c22b3d..0e8677fdcc728be398ab8be2de4a7df8ce34cfae 100644 --- a/MAVENProject/src/main/java/loaders/LoadSave.java +++ b/MAVENProject/src/main/java/loaders/LoadSave.java @@ -22,6 +22,7 @@ public class LoadSave { BufferedImage img = null; InputStream is = LoadSave.class.getResourceAsStream("/" + fileName); try { + assert is != null; img = ImageIO.read(is); } catch (IOException e) { @@ -116,8 +117,6 @@ public class LoadSave { copyValue = 50; //Liste des valeurs lvlData[j][i] = copyValue; - if (lvlData[j][i]==121){ - } } return lvlData; diff --git a/MAVENProject/src/main/java/map/Coffre.java b/MAVENProject/src/main/java/map/Coffre.java index 278a528465d7b71acc3df96af5371a694f6debca..6f4c4feec29d7f34aebff6f3fb771f1757f07770 100644 --- a/MAVENProject/src/main/java/map/Coffre.java +++ b/MAVENProject/src/main/java/map/Coffre.java @@ -12,7 +12,7 @@ public class Coffre { private final HitBox hitbox; public boolean key = true; - private BufferedImage image; + private final BufferedImage image; public Coffre(HitBox h){ this.hitbox = h; diff --git a/MAVENProject/src/main/java/map/Level.java b/MAVENProject/src/main/java/map/Level.java index ee0a046d5a4d6c9c2cc00220c8769b193bab0081..dc503468a8c4f5bf15a682e07cd866e4457fbfe0 100644 --- a/MAVENProject/src/main/java/map/Level.java +++ b/MAVENProject/src/main/java/map/Level.java @@ -2,7 +2,7 @@ package map; public class Level { - private int[][] lvlData; + private final int[][] lvlData; public Level(int[][] lvlData) { this.lvlData = lvlData; @@ -12,8 +12,5 @@ public class Level { return lvlData[y][x]; } - public int[][] getLevelData() { - return lvlData; - } } diff --git a/MAVENProject/src/main/java/map/LevelManager.java b/MAVENProject/src/main/java/map/LevelManager.java index 4d378089f85c6c3ece18dfbbbdb7287f18f238e0..e656cd15363858b007e48a124eff204549ae894d 100644 --- a/MAVENProject/src/main/java/map/LevelManager.java +++ b/MAVENProject/src/main/java/map/LevelManager.java @@ -17,19 +17,17 @@ import loaders.LoadSave; public class LevelManager { - private BufferedImage[] levelSprite; private Level levelOne; - private Level levelTwo; - private List<BufferedImage> obstacleImage = new ArrayList<>(); + private final List<BufferedImage> obstacleImage = new ArrayList<>(); private int indexBoss; private int indexPorte; public LevelManager(String a) { - if (a == "LEVEL_TWO") { + if (a.equals("LEVEL_TWO")) { importOutsideSprites(); levelOne = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_TWO)); //levelTwo = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_TWO)); - } else if (a == "LEVEL_ONE") { + } else if (a.equals("LEVEL_ONE")) { importOutsideSprites(); levelOne = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_ONE)); //levelTwo = new Level(LoadSave.GetLevelData(LoadSave.LEVEL_TWO)); @@ -38,7 +36,7 @@ public class LevelManager { private BufferedImage[] importOutsideSprites() { BufferedImage img = LoadSave.GetSpriteAtlas(LoadSave.LEVEL_SPRITES); - levelSprite = new BufferedImage[16]; + BufferedImage[] levelSprite = new BufferedImage[16]; //Pour les sprites de chaque bloc //longs blocs de 17 de hauteur @@ -76,11 +74,6 @@ public class LevelManager { levelSprite[14] = img.getSubimage(11 * 32, 2 * 32, 32, 288); //Bloc de 12 de hauteur levelSprite[15] = img.getSubimage(10 * 32, 2 * 32, 32, 384); - /*for (int j = 0; j < 2; j++) - for (int i = 0; i < 9; i++) { - int index = j * 9 + i; - levelSprite[index] = img.getSubimage(i * 32, j * 32, 32, 32); - }*/ return levelSprite; } @@ -97,53 +90,53 @@ public class LevelManager { //Index selon la couleur associée au bloc //longs blocs de 17 de hauteur if (index==20) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-17*Jeu.TILES_SIZE/2), 17*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-17*Jeu.TILES_SIZE/2), 17*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[0]); } //Blocs de 3 pixels de hauteur if (index==21) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[1]); } //Blocs de 2 de hauteur if (index==22) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-2*Jeu.TILES_SIZE/2), 2*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-2*Jeu.TILES_SIZE/2), 2*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[2]); } //bloc de 2 de longueur if (index==23) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+2*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 2*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+2*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), Jeu.TILES_SIZE, 2*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[3]); } //Bloc de 3 de longeur if (index==25) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+3*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 3*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+3*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), Jeu.TILES_SIZE, 3*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[4]); } //Porte du boss if (index==44) { - obstaclePorte = new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+1*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE-1)); + obstaclePorte = new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+ Jeu.TILES_SIZE /2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, Jeu.TILES_SIZE -1)); obstacleList.add(obstaclePorte); obstacleImage.add(tabImages[7]); } //Terre verticale de 6 de hauteur if (index==28) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+1*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-6*Jeu.TILES_SIZE/2), 6*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+ Jeu.TILES_SIZE /2, Jeu.TILES_SIZE * j-6*Jeu.TILES_SIZE/2), 6*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[8]); } //Terre horizontale de 7 de longueur if (index==121) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-1*Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j- Jeu.TILES_SIZE /2), Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[9]); } //Long bloc de 7 de longueur if (index==101) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[6]); } //longs blocs de 20 de hauteur if (index==29) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-20*Jeu.TILES_SIZE/2), 20*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-20*Jeu.TILES_SIZE/2), 20*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[10]); } @@ -151,27 +144,27 @@ public class LevelManager { //bloc de 20 de longueur if (index==0) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+20*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-1*Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 20*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+20*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j- Jeu.TILES_SIZE /2), Jeu.TILES_SIZE, 20*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[11]); } //bloc de 9 de longueur if (index==30) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+9*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-1*Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 9*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+9*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j- Jeu.TILES_SIZE /2), Jeu.TILES_SIZE, 9*Jeu.TILES_SIZE))); obstacleImage.add(tabImages[12]); } //Bloc de 5 de hauteur if (index==52) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-5*Jeu.TILES_SIZE/2), 5*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-5*Jeu.TILES_SIZE/2), 5*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[13]); } //Bloc de 9 de hauteur if (index==51) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-9*Jeu.TILES_SIZE/2), 9*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-9*Jeu.TILES_SIZE/2), 9*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[14]); } //Bloc de 12 de hauteur if (index==50) { - obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-12*Jeu.TILES_SIZE/2), 12*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-12*Jeu.TILES_SIZE/2), 12*Jeu.TILES_SIZE, Jeu.TILES_SIZE))); obstacleImage.add(tabImages[15]); } @@ -220,15 +213,6 @@ public class LevelManager { return coffreListe; } - - public void update() { - - } - - public Level getCurrentLevel() { - return levelOne; - } - public List<BufferedImage> getObstacleImage() { return obstacleImage; }