Skip to content
Snippets Groups Projects
Commit 25577227 authored by Louis MALTERRE's avatar Louis MALTERRE
Browse files

methode deplacements changee, y'a plus d'argument a lui donner

j'ai fait qq modifs sur certains attributs, notamment passer l'attribut hitbox en attribut de la
classe Entity car chaque Entity a une hitbox. j'ai laisse en comm l'ancienne version du deplacement dans jeu si jamais
LM
parent ae49cd9f
No related branches found
No related tags found
No related merge requests found
...@@ -59,8 +59,12 @@ class engine.GameEngineGraphical { ...@@ -59,8 +59,12 @@ class engine.GameEngineGraphical {
class entity.Character { class entity.Character {
- masse - masse
- impulsionSaut - impulsionSaut
- tableCommand
+ void deplacements() + void deplacements()
+ void resetCommand()
+ void getGameCommand()
+ void attaque() + void attaque()
+ void evolveCharacter()
} }
class entity.Monster{ class entity.Monster{
+ Coordonnees positions + Coordonnees positions
......
package engine; package engine;
import java.awt.event.KeyListener; import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
/** /**
......
package engine; package engine;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
/** /**
......
package entity; package entity;
import java.util.HashMap;
import java.util.Map;
import environnement.Coordonnees; import environnement.Coordonnees;
import environnement.HitBox; import environnement.HitBox;
import environnement.Physique; import environnement.Physique;
...@@ -11,47 +14,84 @@ public class Character extends Entity{ ...@@ -11,47 +14,84 @@ public class Character extends Entity{
private double vitesseActuZ = 0; private double vitesseActuZ = 0;
private final double impulsionSaut; private final double impulsionSaut;
private double masse; private double masse;
private HitBox charaterHitBox; private int alpha = 1; // gere les collisions avec le sol
private final double entityWIDTH = 30; private final double characterWIDTH = 30; // pour l'instant je les ai renommes, ca peut changer
private final double entityHEIGHT= 60; private final double characterHEIGHT= 60;
private Map<String,Double> tableCommande; //table des commandes du perso
public Character(Coordonnees c,double vitesseMax,double m,double impSaut){ public Character(Coordonnees c,double vitesseMax,double m,double impSaut){
super(c,vitesseMax); super(c,vitesseMax,null); // comme tous les entities ont une hitbox, j'ai factorise
this.masse = m; this.masse = m;
this.impulsionSaut = impSaut; this.impulsionSaut = impSaut;
this.charaterHitBox = new HitBox(c,entityHEIGHT,entityWIDTH); this.hitBox = new HitBox(c,characterHEIGHT,characterWIDTH);
this.tableCommande = new HashMap<String,Double>();
tableCommande.put("CommandX",(double)0);
tableCommande.put("CommandZ",(double)0);
} }
@Override @Override
public void deplacements(double commandX,double commandZ,int alpha){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction public void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction
getGameCommand();
double delta = Math.pow(10, -3); // pas de temps remis en secondes double delta = Math.pow(10, -3); // pas de temps remis en secondes
//on actualise les positions //on actualise les positions
double newX,newZ; double newX,newZ;
newX = commandX*delta + this.getCoord().getX(); // frottements enleves (le perso finissait par freiner tout seul donc tant que y'a pas d'interet je les enleve, j'ai tjr les equations de cote) newX = tableCommande.get("CommandX")*delta + this.getCoord().getX(); // frottements enleves (le perso finissait par freiner tout seul donc tant que y'a pas d'interet je les enleve, j'ai tjr les equations de cote)
if ((commandZ == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ()))newZ = Jeu.getCoordSol().getZ(); if ((tableCommande.get("CommandZ") == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ()))newZ = Jeu.getCoordSol().getZ();
else newZ = ((1-alpha)*Physique.g - commandZ)/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ(); else newZ = ((1-alpha)*Physique.g - tableCommande.get("CommandZ"))/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ();
System.out.println("écart de hauteur: "+Math.abs(this.getCoord().getZ()-newZ)); System.out.println("écart de hauteur: "+Math.abs(this.getCoord().getZ()-newZ));
this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees
//on actualise les vitesses //on actualise les vitesses
vitesseActuX = commandX; vitesseActuX = tableCommande.get("CommandX");
if ((commandZ == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ())) vitesseActuZ = 0; if ((tableCommande.get("CommandZ") == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ())) vitesseActuZ = 0;
else vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - commandZ)*delta; else vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta;
System.out.println("vitesse z: "+vitesseActuZ); System.out.println("vitesse z: "+vitesseActuZ);
resetCommand();
} }
@Override @Override
public void attaque(){ public void attaque(){
} }
public void evolveCharacter(double commandX,double commandZ,int alpha){ public void getGameCommand(){
deplacements(commandX, commandZ, alpha); Map<String,Boolean> commandeJeu = Jeu.getDirectionJeu();
if (commandeJeu.get("Right") && commandeJeu.get("Left")){}
else if (commandeJeu.get("Right")) tableCommande.replace("CommandX", vitesseMax);
else if (commandeJeu.get("Left")) tableCommande.replace("CommandX", -vitesseMax);
if (commandeJeu.get("Jump")) {
if (this.getCoord().getZ() < Jeu.getCoordSol().getZ())alpha = 0;
else if (this.getVitesseActuZ() == 0){tableCommande.replace("CommandZ", impulsionSaut);/*A.add(charac.getCoord().getZ());n++;*/}
}
else {
tableCommande.replace("CommandZ", (double)0);
if (this.getCoord().getZ() < Jeu.getCoordSol().getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer
alpha = 0;
}
else{
alpha = 1;
}
}
}
void resetCommand(){
for (String key : tableCommande.keySet()){
tableCommande.replace(key, (double)0);
}
}
public void evolveCharacter(){
deplacements();
} }
public double getVitesseMax() { public double getVitesseMax() {
...@@ -74,11 +114,11 @@ public class Character extends Entity{ ...@@ -74,11 +114,11 @@ public class Character extends Entity{
} }
@Override @Override
public double getEntityWIDTH() { public double getEntityWIDTH() {
return this.entityWIDTH; return this.characterWIDTH;
} }
@Override @Override
public double getEntityHEIGHT() { public double getEntityHEIGHT() {
return this.entityHEIGHT; return this.characterHEIGHT;
} }
} }
package entity; package entity;
import environnement.Coordonnees; import environnement.Coordonnees;
import environnement.HitBox;
public abstract class Entity { public abstract class Entity {
private Coordonnees coord; private Coordonnees coord;
final double vitesseMax; final double vitesseMax;
protected HitBox hitBox;
private final double entityWIDTH = 10; private final double entityWIDTH = 10;
private final double entityHEIGHT = 10; private final double entityHEIGHT = 10;
public Entity(Coordonnees c,double vitesseMax){ public Entity(Coordonnees c,double vitesseMax,HitBox hitBox){
this.coord = c; this.coord = c;
this.vitesseMax = vitesseMax; this.vitesseMax = vitesseMax;
this.hitBox = hitBox;
} }
public void deplacements(double commandX, double commandZ, int alpha){} public void deplacements(){}
public void attaque(){} public void attaque(){}
public Coordonnees getCoord(){ public Coordonnees getCoord(){
return this.coord; return this.coord;
......
...@@ -3,8 +3,8 @@ package jeu; ...@@ -3,8 +3,8 @@ package jeu;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import entity.Character; import entity.Character;
import engine.Game; import engine.Game;
...@@ -14,6 +14,9 @@ public class Jeu implements Game{ ...@@ -14,6 +14,9 @@ public class Jeu implements Game{
private static Coordonnees coordSol = new Coordonnees(200,700); //coordonnees du sol (en realite juste Z nous interesse) private static Coordonnees coordSol = new Coordonnees(200,700); //coordonnees du sol (en realite juste Z nous interesse)
static Character charac; static Character charac;
private static Map<String,Boolean> directionJeu;
public Jeu(String source) { public Jeu(String source) {
BufferedReader helpReader; BufferedReader helpReader;
...@@ -32,6 +35,12 @@ public class Jeu implements Game{ ...@@ -32,6 +35,12 @@ public class Jeu implements Game{
} catch (IOException e) { } catch (IOException e) {
System.out.println("Help not available"); System.out.println("Help not available");
} }
directionJeu = new HashMap<String,Boolean>();
directionJeu.put("Right", false);
directionJeu.put("Left", false);
directionJeu.put("Jump", false);
} }
@Override @Override
...@@ -39,13 +48,16 @@ public class Jeu implements Game{ ...@@ -39,13 +48,16 @@ public class Jeu implements Game{
System.out.println("Execute "+command); System.out.println("Execute "+command);
System.out.println(charac.getCoord().getX()); System.out.println(charac.getCoord().getX());
System.out.println(charac.getCoord().getZ()); System.out.println(charac.getCoord().getZ());
double comX,comZ; /*double comX,comZ;
int a = 1; int a = 1;
comX = 0; comX = 0;
comZ = 0; comZ = 0;*/
boolean Right = command.get("Right"); directionJeu.replace("Right", command.get("Right"));
directionJeu.replace("Left", command.get("Left"));
directionJeu.replace("Jump", command.get("Jump"));
/*Boolean Right = command.get("Right");
boolean Left = command.get("Left"); boolean Left = command.get("Left");
boolean Jump = command.get("Jump"); boolean Jump = command.get("Jump");
...@@ -58,7 +70,7 @@ public class Jeu implements Game{ ...@@ -58,7 +70,7 @@ public class Jeu implements Game{
} }
if (Jump) { if (Jump) {
if (charac.getCoord().getZ() < coordSol.getZ())a = 0; if (charac.getCoord().getZ() < coordSol.getZ())a = 0;
else if (charac.getVitesseActuZ() == 0){comZ = charac.getImpulsionSaut();/*A.add(charac.getCoord().getZ());n++;*/} else if (charac.getVitesseActuZ() == 0){comZ = charac.getImpulsionSaut();/*A.add(charac.getCoord().getZ());n++;/}
} }
else { else {
if (charac.getCoord().getZ() < coordSol.getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer if (charac.getCoord().getZ() < coordSol.getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer
...@@ -68,8 +80,8 @@ public class Jeu implements Game{ ...@@ -68,8 +80,8 @@ public class Jeu implements Game{
a = 1; a = 1;
} }
} }*/
charac.deplacements(comX, comZ, a); charac.evolveCharacter();
} }
@Override @Override
...@@ -85,5 +97,9 @@ public class Jeu implements Game{ ...@@ -85,5 +97,9 @@ public class Jeu implements Game{
public static Coordonnees getCoordSol(){ public static Coordonnees getCoordSol(){
return coordSol; return coordSol;
} }
public static Map<String, Boolean> getDirectionJeu() {
return directionJeu;
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment