Skip to content
Snippets Groups Projects
Commit 3d13bea7 authored by Louis's avatar Louis
Browse files

perso qui attaque a distance implemente LM

parent d403849e
Branches
No related tags found
No related merge requests found
-Avoir des collisions fonctionnelles
-Création des monstres
-Avoir des collisions fonctionnelles +
-Création des monstres +
-Création des coffres et des clés
-Création des vies
-Création de la caméra
-Création des vies +
-Création de la caméra +
-Création du niveau
-Implémenter une musique
-Implémenter une musique +
......
......@@ -208,4 +208,10 @@ public class Character extends Entity{
public Boolean death(){
return nbLifePoints == 0;
}
public Map<String, Double> getTableCommande() {
return tableCommande;
}
}
package entity;
import java.util.List;
import environnement.Coordonnees;
import environnement.HitBox;
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
private boolean disappear = false; //variable disant si le kunai doit disparaitre ou non
private static final int sideLength = 16;
public Kunai(int dir,int dmg,Coordonnees c){
coord = c;
coordInit = coord;
damage = dmg;
direction = dir;
hitBox = new HitBox(coord,sideLength,sideLength);
}
public void deplacement(){ //deplacement du kunai
double newX = coord.getX() + direction*vitesse;
this.coord = new Coordonnees(newX, this.coord.getZ());
}
public void updateHitBox(){ //on update la hitbox du kunai
hitBox = new HitBox(coord,sideLength,sideLength);
}
public void dealsDamage(Entity entity){
if (HitBox.collision(hitBox, entity.getHitBox())){
if (entity.nbFramesInvincible == 0){
entity.setNbLifePoints(Math.max(entity.getNbLifePoints()-damage,0));
entity.nbFramesInvincible = entity.nbMaxFramesInvicible;//l'entity devient invincible qq frames
}
disappear = true; //disparait apres choc avec un monstre
}
}
private void evolveKunai(){
deplacement();
updateHitBox();
for (Monster monster : getMonsterList()){
dealsDamage(monster);
if (disappear)break; //si le kunai a disparu on arrete de regarder les autres monstres
}
if (Math.abs(coordInit.getX()-coord.getX()) >= 500) disappear = true; //au bout d'une certaine distance parcourue, il disparait
}
public static void evolveAllKunais(List<Kunai> liste){
for (Kunai kunai : liste){
kunai.evolveKunai();
}
int k = 0;
while (k < liste.size()){
if (liste.get(k).disappear) liste.remove(liste.get(k));
else k++;
}
}
public Coordonnees getCoord() {
return coord;
}
public HitBox getHitBox() {
return hitBox;
}
public static int getSideLength() {
return sideLength;
}
}
package entity;
import java.util.List;
import environnement.Coordonnees;
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
public ShootingCharacter(Coordonnees c, double vitesseMax, double m, double impSaut){
super(c, vitesseMax, m, impSaut);
}
public void attaque(){
if (this.getTableCommande().get("CommandAttack") != 0 && hasAttacked == 0){ //on ajoute un kunai dans la liste
List<Kunai> temp = Jeu.getKunaiList();
Coordonnees coordKunai = new Coordonnees(coord.getX()+direction*Kunai.getSideLength()/2+direction*this.getEntityWIDTH()/2, coord.getZ());
temp.add(new Kunai(direction, attackStat, coordKunai));
Jeu.setKunaiList(temp);
hasAttacked++;
}
}
public void evolveCharacter(){
super.evolveCharacter();
if (hasAttacked > 0){
hasAttacked++;
if (hasAttacked > 50)hasAttacked = 0;
}
}
}
......@@ -10,7 +10,9 @@ import java.util.List;
import java.util.Map;
import entity.Character;
import entity.Kunai;
import entity.Monster;
import entity.ShootingCharacter;
import engine.Game;
import environnement.Coordonnees;
import environnement.HitBox;
......@@ -58,6 +60,7 @@ public class Jeu implements Game{
private static List<Obstacle> obstacleTable = new ArrayList<>();
private static List<Monster> monsterList = new ArrayList<>();
private static List<Kunai> kunaiList = new ArrayList<>();
//private static List<Coffre> coffreTable = new ArrayList<>();
......@@ -111,8 +114,8 @@ public class Jeu implements Game{
monsterList.add(new Monster(new Coordonnees(300, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,5));
//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), 1500, 1,600000));
gameCharacter = new Character(new Coordonnees(xdebut, zdebut), 1500, 1,600000);
gameCharacterLoader = new CharacterLoader(characterSkinPath,new ShootingCharacter(new Coordonnees(300, 300), 1500, 1,600000));
gameCharacter = new ShootingCharacter(new Coordonnees(xdebut, zdebut), 1500, 1,600000);
//on remplit la map des frames
Map<String,Integer> tempMap = gameCharacterLoader.getPathTable();
......@@ -149,6 +152,8 @@ public class Jeu implements Game{
gameCharacter.evolveCharacter();
//monstres evoluent dans le jeu
Monster.evolveAllMonsters(monsterList);
//kunais evoluent dans le jeu
Kunai.evolveAllKunais(kunaiList);
//animation du perso dans le jeu (definir la bonne frame a cet instant)
animation(Attack, Right, Left);
......@@ -231,6 +236,14 @@ public class Jeu implements Game{
return monsterList;
}
public static List<Kunai> getKunaiList() {
return kunaiList;
}
public static void setKunaiList(List<Kunai> kunaiList) {
Jeu.kunaiList = kunaiList;
}
}
\ No newline at end of file
package jeu;
import engine.GamePainter;
import entity.Kunai;
import entity.Monster;
import environnement.Coordonnees;
import environnement.HitBox;
......@@ -49,6 +50,7 @@ public class Painter implements GamePainter{
drawObstacleBis(crayon,test,"plateforme.png"); // A changer
drawLifePoints(crayon);
drawMonsters(crayon);
drawKunais(crayon);
}
......@@ -170,6 +172,20 @@ public class Painter implements GamePainter{
}
}
private void drawKunais(Graphics2D crayon){
int x;
int z;
crayon.setColor(Color.blue);
for (Kunai kunai : getKunaiList()){
crayon.setColor(Color.blue);
x = (int)kunai.getCoord().getX();
z = (int)kunai.getCoord().getZ();
if (HitBox.collision(gameCharacter.getHitBox(),kunai.getHitBox()))crayon.setColor(Color.red);
crayon.fillRect(x-Kunai.getSideLength()/2 - xCam, z-Kunai.getSideLength()/2 - zCam, Kunai.getSideLength(), Kunai.getSideLength());
}
}
@Override
public int getWidth() {
return WIDTH;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment