diff --git a/MAVENProject/src/main/java/entity/Attack.java b/MAVENProject/src/main/java/entity/Attack.java new file mode 100644 index 0000000000000000000000000000000000000000..ae31bddae50387dc1e81fb24e9078f682d94d14d --- /dev/null +++ b/MAVENProject/src/main/java/entity/Attack.java @@ -0,0 +1,21 @@ +package entity; + +import environnement.Coordonnees; +import environnement.HitBox; + +public class Attack { + + int damage; + Coordonnees coordCentre; + HitBox hitBox; + + public Attack(int dmg,Coordonnees c,HitBox hb){ + damage = dmg; + coordCentre = c; + hitBox = hb; + } + + public void dealDamage(Entity entity){ + entity.setNbLifePoints(Math.max(entity.getNbLifePoints()-damage, 0)); + } +} diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java index 1a14d6190c8b0048cf6a1695c311910450abf09e..73d24c01718f3924870d895493364e8034cb6582 100644 --- a/MAVENProject/src/main/java/entity/Entity.java +++ b/MAVENProject/src/main/java/entity/Entity.java @@ -13,19 +13,19 @@ import map.Obstacle; public abstract class Entity { - protected Coordonnees coord; - protected Coordonnees oldCoord; - protected final double vitesseMax; - protected HitBox hitBox; - protected int attackStat; // nb de pv enleves par attaque - protected int maxLifePoints = 3; - protected int nbLifePoints = maxLifePoints; - protected final double entityWIDTH; - protected final double entityHEIGHT; - protected int alpha = 1; // gere les collisions avec le sol - protected HitBox voisinage; - protected int direction = 1; // direction selon l'axe des x, -1 pour la gauche et 1 pour la droite - protected List<PositionCollision> obstacleTableCollision = new ArrayList<>(); + Coordonnees coord; + Coordonnees oldCoord; + final double vitesseMax; + HitBox hitBox; + int attackStat; // nb de pv enleves par attaque + int maxLifePoints = 3; + int nbLifePoints = maxLifePoints; + final double entityWIDTH; + final double entityHEIGHT; + 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<>(); public Entity(Coordonnees c,double vitesseMax,double width,double height,int atkStt){ diff --git a/MAVENProject/src/main/java/entity/Monster.java b/MAVENProject/src/main/java/entity/Monster.java index cfbaa0d9c53d1b8331577d33b5bb642d0c23f3d3..8887c1b632382561e375652253a3e622f595406d 100644 --- a/MAVENProject/src/main/java/entity/Monster.java +++ b/MAVENProject/src/main/java/entity/Monster.java @@ -9,7 +9,6 @@ import jeu.Jeu; import map.Obstacle; import static jeu.Jeu.getGameCharacter; -import static jeu.Jeu.getObstacleTable; import java.util.ArrayList; import java.util.HashMap; @@ -18,7 +17,8 @@ import java.util.List; public class Monster extends Entity{ - double vitesseActuZ = 0; + private double vitesseActuZ = 0; + private Obstacle obstacleBeneath = Jeu.getSol(); //obstacle en dessous public Monster(Coordonnees c, double vitesseMax,double width,double height,int atkStt,int nbLP) { super(c, vitesseMax,width,height,atkStt); @@ -33,8 +33,8 @@ public class Monster extends Entity{ oldCoord = coord; //temporaire, pour faire un deplacement cyclique - if (coord.getX() < 0)direction = 1; - else if (coord.getX() >= 1000)direction = -1; + if (coord.getX() < 0 || coord.getX() <= obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getX())direction = 1; + else if (coord.getX() >= 1000 || coord.getX() >= obstacleBeneath.getHitbox().getExtremites().get("HautDroite").getX())direction = -1; //****************** double newX = coord.getX()+direction*vitesseMax*delta; @@ -64,6 +64,7 @@ public class Monster extends Entity{ this.vitesseActuZ = 0; this.setCoord(new Coordonnees(this.getCoord().getX(), listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2)); alpha = 1; + obstacleBeneath = listeObstaclesInVoisinage.get(i); break; } } @@ -124,7 +125,7 @@ public class Monster extends Entity{ } public void updateVoisinage(){ - voisinage = new HitBox(coord, 600, 600); + voisinage = new HitBox(coord, 1000, 1000); } public Boolean death(){ diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index fca7b6724b9fa30b514b7d34fff78bffdc80c849..0cbeb33e8bbea6e2d8443843cecba69f61dfb5ef 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -103,6 +103,7 @@ public class Jeu implements Game{ monsterList.add(new Monster(new Coordonnees(1000, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10)); monsterList.add(new Monster(new Coordonnees(500, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10)); monsterList.add(new Monster(new Coordonnees(100, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10)); + monsterList.add(new Monster(new Coordonnees(300, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10)); //on charge le perso (a la fin du constructeur, cest important par rapport a obstacleTable, sinon y'a des pbs de "causalite") gameCharacterLoader = new CharacterLoader(characterSkinPath,new Character(new Coordonnees(300, 300), 2000, 1,600000));