From 1341e0e135c0f477688366706676a9bf4df1e483 Mon Sep 17 00:00:00 2001 From: Louis <malterre.louis@laposte.net> Date: Sun, 11 Dec 2022 00:32:05 +0100 Subject: [PATCH] chauve-souris creees, boss cree (j'aimerais le faire sauter a terme) LM --- MAVENProject/src/main/java/entity/Bat.java | 44 +++++++++++++++++++ MAVENProject/src/main/java/entity/Boss.java | 12 +++++ .../src/main/java/entity/Character.java | 5 --- MAVENProject/src/main/java/entity/Kunai.java | 2 +- .../src/main/java/entity/Monster.java | 23 ++++++---- MAVENProject/src/main/java/jeu/Jeu.java | 8 +++- 6 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 MAVENProject/src/main/java/entity/Bat.java create mode 100644 MAVENProject/src/main/java/entity/Boss.java diff --git a/MAVENProject/src/main/java/entity/Bat.java b/MAVENProject/src/main/java/entity/Bat.java new file mode 100644 index 0000000..fd0a6a0 --- /dev/null +++ b/MAVENProject/src/main/java/entity/Bat.java @@ -0,0 +1,44 @@ +package entity; + +import environnement.Coordonnees; +import environnement.HitBox; +import static jeu.Jeu.getGameCharacter; + +public class Bat extends Monster{ + int directionZ = 1; //meme principe que direction pour x + final double vitesseMaxZ = 1000; + + public Bat(Coordonnees c,int atkStt,int nbLP){ + super(c, 1000, 20, 30, atkStt, nbLP); + coordInit = coord; + } + + public void deplacements(){ + + double delta = Math.pow(10, -3); + + //oscillement selon z + if (coordInit.getZ()-coord.getZ() >= 50){ + directionZ = 1; + } + else if (coordInit.getZ()-coord.getZ() <= -50){ + directionZ = -1; + } + + //oscillement selon x + if (coord.getX() < 0)direction = 1; + else if (coord.getX() >= 1000)direction = -1; + + //actualisation des coordonnees + double newX = coord.getX() + direction*vitesseMax*delta; + double newZ = coord.getZ() + directionZ*vitesseMaxZ*delta; + coord = new Coordonnees(newX, newZ); + } + + public void attaque(){ + if (HitBox.collision(hitBox, getGameCharacter().getHitBox()) && getGameCharacter().nbFramesInvincible == 0){ + getGameCharacter().setNbLifePoints(Math.max(getGameCharacter().getNbLifePoints()-attackStat, 0)); + getGameCharacter().nbFramesInvincible = getGameCharacter().nbMaxFramesInvicible; + } + } +} diff --git a/MAVENProject/src/main/java/entity/Boss.java b/MAVENProject/src/main/java/entity/Boss.java new file mode 100644 index 0000000..99257fb --- /dev/null +++ b/MAVENProject/src/main/java/entity/Boss.java @@ -0,0 +1,12 @@ +package entity; + +import environnement.Coordonnees; +//import environnement.Physique; + +public class Boss extends Monster{ + + public Boss(Coordonnees c, double vitesseMax,double width,double height,int atkStt,int nbLP){ + super(c, vitesseMax, width, height, atkStt, nbLP); + } + +} diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index dd3c9ac..79ad89d 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -53,11 +53,6 @@ public class Character extends Entity{ newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ(); - - /*if (newZ+entityHEIGHT/2 >= Jeu.getSol().getHitbox().getExtremites().get("HautGauche").getZ()){ - newZ = Jeu.getSol().getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2; //on remet sur le sol - alpha = 1; - }*/ this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees diff --git a/MAVENProject/src/main/java/entity/Kunai.java b/MAVENProject/src/main/java/entity/Kunai.java index cd864ad..05caa7b 100644 --- a/MAVENProject/src/main/java/entity/Kunai.java +++ b/MAVENProject/src/main/java/entity/Kunai.java @@ -60,7 +60,7 @@ public class Kunai { kunai.evolveKunai(); } int k = 0; - while (k < liste.size()){ + while (k < liste.size()){ //on supprime les kunais utilises if (liste.get(k).disappear) liste.remove(liste.get(k)); else k++; } diff --git a/MAVENProject/src/main/java/entity/Monster.java b/MAVENProject/src/main/java/entity/Monster.java index d7b9bc8..f1916d4 100644 --- a/MAVENProject/src/main/java/entity/Monster.java +++ b/MAVENProject/src/main/java/entity/Monster.java @@ -17,14 +17,18 @@ import java.util.List; public class Monster extends Entity{ - private double vitesseActuZ = 0; - private Obstacle obstacleBeneath = Jeu.getSol(); //obstacle en dessous - private int isAttacking = 0;//pour qu'il s'arrete si il attaque + double vitesseActuZ = 0; + 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; public Monster(Coordonnees c, double vitesseMax,double width,double height,int atkStt,int nbLP) { super(c, vitesseMax,width,height,atkStt); maxLifePoints = nbLP; nbLifePoints = maxLifePoints; + coordInit = coord; } public void deplacements(){ @@ -33,16 +37,16 @@ public class Monster extends Entity{ //on se souvient de ses anciennes positions oldCoord = coord; - //temporaire, pour faire un deplacement cyclique - 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; + //pour faire un deplacement cyclique + if ((coordInit.getX()-coord.getX() >= 500 && direction == -1) || coord.getX() <= obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getX())direction = 1; + else if ((coordInit.getX()-coord.getX() <= -500 && direction == 1) || coord.getX() >= obstacleBeneath.getHitbox().getExtremites().get("HautDroite").getX())direction = -1; //****************** double newX = coord.getX() + (1-Math.min(isAttacking,1))*direction*vitesseMax*delta; double newZ = (1-alpha)*Physique.g/2*delta*delta + this.vitesseActuZ*delta + this.getCoord().getZ(); setCoord(new Coordonnees(newX, newZ)); - vitesseActuZ = vitesseActuZ + 7*(1-alpha)*Physique.g*delta; + vitesseActuZ = vitesseActuZ + 8*(1-alpha)*Physique.g*delta; } public void collisionGestion(){ @@ -62,7 +66,8 @@ public class Monster extends Entity{ //on parcourt pour tester si il est sur un block for (int i=0;i<collisionsPresentes.size();i++){ //si on trouve on sort de la boucle (pas besoin d'aller plus loin) - if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == BAS){ + if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == BAS){ + //si on a donné une impulsion, on regarde pas les collisions bas this.vitesseActuZ = 0; this.setCoord(new Coordonnees(this.getCoord().getX(), listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2)); alpha = 1; @@ -70,7 +75,7 @@ public class Monster extends Entity{ break; } } - + //on gere les collisions laterales for (int i=0;i<collisionsPresentes.size();i++){ if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == DROITE && this.direction == -1){ diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index ab5301c..4c9ea5e 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -9,6 +9,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import entity.Bat; +import entity.Boss; import entity.Character; import entity.Kunai; import entity.Monster; @@ -111,10 +113,12 @@ public class Jeu implements Game{ 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(300, 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") - gameCharacterLoader = new CharacterLoader(characterSkinPath,new ShootingCharacter(new Coordonnees(300, 300), 1500, 1,600000)); + gameCharacterLoader = new CharacterLoader(characterSkinPath,new ShootingCharacter(new Coordonnees(xdebut, zdebut), 1500, 1,600000)); gameCharacter = new ShootingCharacter(new Coordonnees(xdebut, zdebut), 1500, 1,600000); //on remplit la map des frames -- GitLab