diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java index a393971065ff1dc9bce3399c442503a13e329203..9c55af70caa335ba0e1354450883b9352c576463 100644 --- a/MAVENProject/src/main/java/entity/Character.java +++ b/MAVENProject/src/main/java/entity/Character.java @@ -3,6 +3,7 @@ package entity; import engine.GameEngineGraphical; import environnement.Coordonnees; import environnement.Physique; +import jeu.Jeu; public class Character extends Entity{ //Coordonnees coord; @@ -11,7 +12,7 @@ public class Character extends Entity{ double vitesseActuZ = 0; double m; - public Character(Coordonnees c,int vitesseMax,double m){ + public Character(Coordonnees c,double vitesseMax,double m){ super(c,vitesseMax); this.m = m; @@ -22,29 +23,23 @@ public class Character extends Entity{ //on actualise les positions double newX,newZ; - if (commandX != 0){ - newX = -m/Physique.lambda*(vitesseActuX - commandX/Physique.lambda)*Math.exp(-Physique.lambda*delta/m) + commandX*delta + this.getCoord().getX(); - } - else newX = this.getCoord().getX(); - if ((commandZ == 0) && (this.getCoord().getZ() >= 80))newZ = this.getCoord().getZ(); - else newZ = ((1-alpha)*Physique.g - commandZ/m)/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ(); - System.out.println("écart de hauteur: "+(this.getCoord().getZ()-newZ)); - this.setCoord(new Coordonnees(newX, newZ)); // repere ou la hauteur augmente vers le bas, a revoir + 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) + + if ((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(); + + System.out.println("écart de hauteur: "+Math.abs(this.getCoord().getZ()-newZ)); + + this.setCoord(new Coordonnees(newX, newZ)); // on set les nouvelles coordonnees //on actualise les vitesses - if (commandX != 0){ - vitesseActuX = (vitesseActuX - commandX/Physique.lambda)*Math.exp(-delta*Physique.lambda/m); - vitesseActuX += commandX/Physique.lambda; - } - else vitesseActuX = 0; - if ((commandZ == 0) && (this.getCoord().getZ() >= 80)) vitesseActuZ = 0; - vitesseActuZ = vitesseActuZ + ((1-alpha)*Physique.g - commandZ/m)*delta; - System.out.println("vitesse z: "+vitesseActuZ); - //vitesseActuZ = -vitesseActuZ; - - - + vitesseActuX = commandX; + + if ((commandZ == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ())) vitesseActuZ = 0; + else vitesseActuZ = vitesseActuZ + ((1-alpha)*Physique.g - commandZ)*delta; + + System.out.println("vitesse z: "+vitesseActuZ); } @Override public void attaque(){ diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java index a347f8dcdb90dd4ab97a853cfd1a04862ef0e587..dd73764b22c20391756533022a67c80d9a8a498a 100644 --- a/MAVENProject/src/main/java/entity/Entity.java +++ b/MAVENProject/src/main/java/entity/Entity.java @@ -4,9 +4,9 @@ import environnement.Coordonnees; public abstract class Entity { private Coordonnees coord; - int vitesseMax; + final double vitesseMax; - public Entity(Coordonnees c,int vitesseMax){ + public Entity(Coordonnees c,double vitesseMax){ this.coord = c; this.vitesseMax = vitesseMax; } diff --git a/MAVENProject/src/main/java/environnement/Physique.java b/MAVENProject/src/main/java/environnement/Physique.java index 2fb7e05f03ef2068d5ce14875ba88b5e8eafe7c9..361f257ff4e2497e138c2bc0843cab617ed90ba3 100644 --- a/MAVENProject/src/main/java/environnement/Physique.java +++ b/MAVENProject/src/main/java/environnement/Physique.java @@ -2,5 +2,4 @@ package environnement; public class Physique { public static final double g = 3000; // pesanteur - public static final double lambda = 0.05; // coefficient de frottements } diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index 4f385a991dee55a0d3c2b69e46c47c2e934cf1ed..8193475f6954362fadf8058fe1bd8702daaa4ae5 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -1,25 +1,30 @@ package jeu; import engine.Game; -import engine.GameEngineGraphical; -import environnement.Physique; +import environnement.Coordonnees; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import entity.Character; -import static jeu.Painter.charac; public class Jeu implements Game{ - - public static double commandX; // pour la commande deplacements - - public static double commandZ; // pour la commande deplacements + private static Coordonnees coordSol; //coordonnees du sol (en realite juste Z nous interesse) + static Character charac; + /*private static ArrayList<Double> A; // pour mes tests, ne pas faire attention + int n;*/ // idem public Jeu(String source) { BufferedReader helpReader; + + /*A = new ArrayList<Double>(); + n = 0;*/ + + charac = new entity.Character(new Coordonnees(200, 300), 1500, 1); + coordSol = charac.getCoord(); try { helpReader = new BufferedReader(new FileReader(source)); String line; @@ -39,7 +44,7 @@ public class Jeu implements Game{ System.out.println(charac.getCoord().getZ()); double comX,comZ; int a = 1; - int n = 0; //tentative de faire une commande selon z qui décroit au cours du temps + comX = 0; comZ = 0; @@ -49,27 +54,22 @@ public class Jeu implements Game{ if (Right) { - comX = -charac.getVitesseMax()*Physique.lambda; + comX = -charac.getVitesseMax(); } else if (Left) { - comX = charac.getVitesseMax() * Physique.lambda; + comX = charac.getVitesseMax(); } if (Jump) { - if (charac.getCoord().getZ() < 80){a = 0;} - else comZ = 300000 * charac.getVitesseMax() * charac.getM()*Math.exp(-n*GameEngineGraphical.getDeltaT()*Math.pow(10, -3)); + if (charac.getCoord().getZ() < coordSol.getZ())a = 0; + else {comZ = 400*charac.getVitesseMax();/*A.add(charac.getCoord().getZ());n++;*/} } else { - if (charac.getCoord().getZ() < 80) { //a retoucher, j'ai besoin d'autres choses pour avancer - a = 0; + if (charac.getCoord().getZ() < coordSol.getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer + a = 0; } else{ a = 1; - n = 0; } - - /*else{ - a = 1; - }*/ } charac.deplacements(comX, comZ, a); @@ -78,7 +78,15 @@ public class Jeu implements Game{ @Override public boolean isFinished() { // le jeu n'est jamais fini + /*if (n >= 10){ + System.out.println(A.toString()); + return true; + }*/ return false; } + + public static Coordonnees getCoordSol(){ + return coordSol; + } } \ No newline at end of file diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java index 4b70699d139e0b6114af8f34e467acfab88cce45..24fae6c876ae41348073afaf7b07db5509ac01a0 100644 --- a/MAVENProject/src/main/java/jeu/Painter.java +++ b/MAVENProject/src/main/java/jeu/Painter.java @@ -3,19 +3,15 @@ package jeu; import engine.GamePainter; import java.awt.*; import java.awt.image.BufferedImage; -import entity.Character; -import environnement.Coordonnees; +import static jeu.Jeu.charac; public class Painter implements GamePainter{ protected static final int WIDTH = 1000; protected static final int HEIGHT = 1000; - public static Character charac; public Painter() { - Coordonnees coordonnees = new Coordonnees(20,80); - charac = new Character(coordonnees, 2, 0.09); // pour simplifier les tests ce n'est pas de cette façon que le personnage sera cree à la fin } @Override diff --git a/MAVENProject/target/classes/entity/Character.class b/MAVENProject/target/classes/entity/Character.class index 8aeb807e07e94b6705daac27ef5d235030f866b2..a90a2df72506de0ea2cfc13f6841c7552b7f5375 100644 Binary files a/MAVENProject/target/classes/entity/Character.class and b/MAVENProject/target/classes/entity/Character.class differ diff --git a/MAVENProject/target/classes/entity/Entity.class b/MAVENProject/target/classes/entity/Entity.class index 752e41fda65e67dc6323f5903c4463e6b8710315..35e84f8f0d4d6a2051ff954fd9ca94b3715face5 100644 Binary files a/MAVENProject/target/classes/entity/Entity.class and b/MAVENProject/target/classes/entity/Entity.class differ