Skip to content
Snippets Groups Projects
Commit 54fd3cff authored by Louis's avatar Louis
Browse files

deplacements horizontaux ok, sauts a revoir (j'm'en charge)

parent 2267652c
No related branches found
No related tags found
No related merge requests found
......@@ -28,6 +28,8 @@ public class GameEngineGraphical {
*/
private GraphicalInterface gui;
private final static int deltaT = 1;
/**
* construit un moteur
*
......@@ -63,8 +65,13 @@ public class GameEngineGraphical {
// affiche le game
this.gui.paint();
// met en attente
Thread.sleep(100);
Thread.sleep(deltaT);
}
}
public static int getDeltaT() { // pour modifier le pas de temps librement
return deltaT;
}
}
package entity;
import engine.GameEngineGraphical;
import environnement.Coordonnees;
import environnement.Physique;
public class Character extends Entity{
<<<<<<< HEAD
//Coordonnees coord;
//double vitesseMax; // vitesse max
=======
double vitesseMax; // vitesse max
>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ
double vitesseActuZ = 0;
double m;
......@@ -22,25 +18,26 @@ public class Character extends Entity{
}
@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
double delta = 0.1; // pas de temps = 0.1s
double delta = GameEngineGraphical.getDeltaT()*Math.pow(10, -3); // pas de temps remis en secondes
//on actualise les positions
double newX,newZ;
<<<<<<< HEAD
newX = -Physique.lambda/m*(vitesseActuX - commandX/Physique.lambda)*Math.exp(-Physique.lambda*delta/m) + commandX*delta + coord.getX();
newZ = ((1-alpha)*Physique.g - commandZ/m)/2*delta*delta + vitesseActuZ*delta + coord.getZ();
coord = new Coordonnees(newX, newZ); // repere ou la hauteur augmente vers le bas, a revoir
=======
newX = ((-Physique.lambda / m) * (vitesseActuX - commandX) * Math.exp(-Physique.lambda / m * delta)) + (commandX * delta) + this.getCoord().getX();
newZ = ((alpha-1)*Physique.g + commandZ)/2*delta*delta + vitesseActuZ*delta + this.getCoord().getZ();
this.getCoord().evolveX(newX);
this.getCoord().evolveZ(newZ);
>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
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();
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
//on actualise les vitesses
vitesseActuX = (vitesseActuX - commandX/Physique.lambda)*Math.exp(-delta*Physique.lambda/m);
vitesseActuX += commandX/Physique.lambda;
if (commandX != 0){
vitesseActuX = (vitesseActuX - commandX/Physique.lambda)*Math.exp(-delta*Physique.lambda/m);
vitesseActuX += commandX/Physique.lambda;
}
else vitesseActuX = 0;
vitesseActuZ = vitesseActuZ + ((1-alpha)*Physique.g - commandZ/m)*delta;
System.out.println("vitesse z: "+vitesseActuZ);
//vitesseActuZ = -vitesseActuZ;
......@@ -51,10 +48,6 @@ public class Character extends Entity{
}
public Coordonnees getCoord() {
return coord;
}
public double getVitesseMax() {
return vitesseMax;
}
......
......@@ -15,4 +15,8 @@ public abstract class Entity {
public Coordonnees getCoord(){
return this.coord;
} // Pour retourner les coordonées
public void setCoord(Coordonnees coord) {
this.coord = coord;
}
}
package environnement;
public class Physique {
public static final double g = 9.81; // pesanteur
public static final double lambda = 1; // coefficient de frottements
public static final double g = 10000; // pesanteur
public static final double lambda = 0.05; // coefficient de frottements
}
......@@ -2,21 +2,15 @@ package jeu;
import engine.Cmd;
import engine.Game;
import environnement.Physique;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
<<<<<<< HEAD
import static jeu.Painter.charac;
=======
import entity.Character;
import environnement.Coordonnees;
>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
public class Jeu implements Game{
public static Coordonnees coordonnees = new Coordonnees(20,80);
public static Character personnage = new Character(coordonnees,10,1); // pour simplifier les tests ce n'est pas de cette façon que le personnage sera créé à la fin
public static double commandX; // pour la commande deplacements
......@@ -39,7 +33,6 @@ public class Jeu implements Game{
@Override
public void evolve(Cmd commande) {
System.out.println("Execute "+commande);
<<<<<<< HEAD
System.out.println(charac.getCoord().getX());
System.out.println(charac.getCoord().getZ());
double comX,comZ;
......@@ -49,51 +42,23 @@ public class Jeu implements Game{
switch (commande) {
case LEFT:
comX = -charac.getVitesseMax();
//coordonnees.evolveX(-2);
comX = -charac.getVitesseMax()*Physique.lambda;
break;
case RIGHT:
comX = charac.getVitesseMax();
//coordonnees.evolveX(2);
comX = charac.getVitesseMax()*Physique.lambda;
break;
case JUMP:
comZ = 3*charac.getVitesseMax();
if (charac.getCoord().getZ() < 80)a = 0;
else comZ = 30000*charac.getVitesseMax()*charac.getM();
break;
case IDLE:
if (charac.getCoord().getZ() < 80){ //a retoucher, j'ai besoin d'autres choses pour avancer
a = 0;
}
else{
if (charac.getCoord().getZ() >= 80){ //a retoucher, j'ai besoin d'autres choses pour avancer
a = 1;
}
=======
System.out.println(coordonnees.getX()); // test pour debugger
System.out.println(coordonnees.getZ());
System.out.println(personnage.getCoord().getX());
switch (commande) {
case LEFT:
commandX = 1; // valeur arbitraire pour toutes les commendes X et Z Louis à toi de voir
commandZ = 0;
personnage.deplacements(commandX,commandZ,0);
break;
case RIGHT:
commandX = -1;
commandZ = 0;
personnage.deplacements(commandX,commandZ,0);
break;
case JUMP:
commandZ = 6;
commandX = 0;
personnage.deplacements(commandX,commandZ,0);
break;
case IDLE:
commandZ = 0;
commandX = 0;
personnage.deplacements(commandX,commandZ,0);
>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
/*else{
a = 1;
}*/
break;
......
......@@ -3,41 +3,27 @@ package jeu;
import engine.GamePainter;
import java.awt.*;
import java.awt.image.BufferedImage;
<<<<<<< HEAD
import entity.Character;
=======
import static jeu.Jeu.coordonnees;
>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
import environnement.Coordonnees;
public class Painter implements GamePainter{
protected static final int WIDTH = 1000;
<<<<<<< HEAD
protected static final int HEIGHT = 1000;
public static Character charac;
public Painter() {
Coordonnees coordonnees = new Coordonnees(20,80);
charac = new Character(coordonnees, 36, 50000);
=======
protected static final int HEIGHT = 100;
public Painter() {
>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
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
public void draw(BufferedImage im) {
Graphics2D crayon = (Graphics2D) im.getGraphics();
crayon.setColor(Color.blue);
<<<<<<< HEAD
int x = (int) charac.getCoord().getX();
int y = (int) charac.getCoord().getZ();
=======
int x = (int)Math.round(coordonnees.getX());
int y = (int)Math.round(coordonnees.getZ());
>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
crayon.fillOval(x,y,10,10);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment