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
Branches
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