Skip to content
Snippets Groups Projects
Commit 7dc27c82 authored by Louis's avatar Louis
Browse files

petites modifs faites, dont les frottements qui ont ete enleves car faisaient freiner

le perso sur du long terme. j'ai tjr les equations correspondantes mais la ils sont negliges.
j'ai remarque que le saut permettait de faire une sorte de boost sur le perso (a peine sorti d'un saut,
si on en renchaine un, il ira plus haut). j'ai trouve ca sympa donc je l'ai laisse, vous me direz ce que vous en pensez§
LM
parent 76f61580
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ package entity; ...@@ -3,6 +3,7 @@ package entity;
import engine.GameEngineGraphical; import engine.GameEngineGraphical;
import environnement.Coordonnees; import environnement.Coordonnees;
import environnement.Physique; import environnement.Physique;
import jeu.Jeu;
public class Character extends Entity{ public class Character extends Entity{
//Coordonnees coord; //Coordonnees coord;
...@@ -11,7 +12,7 @@ public class Character extends Entity{ ...@@ -11,7 +12,7 @@ public class Character extends Entity{
double vitesseActuZ = 0; double vitesseActuZ = 0;
double m; double m;
public Character(Coordonnees c,int vitesseMax,double m){ public Character(Coordonnees c,double vitesseMax,double m){
super(c,vitesseMax); super(c,vitesseMax);
this.m = m; this.m = m;
...@@ -22,29 +23,23 @@ public class Character extends Entity{ ...@@ -22,29 +23,23 @@ public class Character extends Entity{
//on actualise les positions //on actualise les positions
double newX,newZ; 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(); 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)
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)); if ((commandZ == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ()))newZ = Jeu.getCoordSol().getZ();
this.setCoord(new Coordonnees(newX, newZ)); // repere ou la hauteur augmente vers le bas, a revoir 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 //on actualise les vitesses
if (commandX != 0){ vitesseActuX = commandX;
vitesseActuX = (vitesseActuX - commandX/Physique.lambda)*Math.exp(-delta*Physique.lambda/m);
vitesseActuX += commandX/Physique.lambda; if ((commandZ == 0) && (this.getCoord().getZ() >= Jeu.getCoordSol().getZ())) vitesseActuZ = 0;
} else vitesseActuZ = vitesseActuZ + ((1-alpha)*Physique.g - commandZ)*delta;
else vitesseActuX = 0;
if ((commandZ == 0) && (this.getCoord().getZ() >= 80)) vitesseActuZ = 0; System.out.println("vitesse z: "+vitesseActuZ);
vitesseActuZ = vitesseActuZ + ((1-alpha)*Physique.g - commandZ/m)*delta;
System.out.println("vitesse z: "+vitesseActuZ);
//vitesseActuZ = -vitesseActuZ;
} }
@Override @Override
public void attaque(){ public void attaque(){
......
...@@ -4,9 +4,9 @@ import environnement.Coordonnees; ...@@ -4,9 +4,9 @@ import environnement.Coordonnees;
public abstract class Entity { public abstract class Entity {
private Coordonnees coord; private Coordonnees coord;
int vitesseMax; final double vitesseMax;
public Entity(Coordonnees c,int vitesseMax){ public Entity(Coordonnees c,double vitesseMax){
this.coord = c; this.coord = c;
this.vitesseMax = vitesseMax; this.vitesseMax = vitesseMax;
} }
......
...@@ -2,5 +2,4 @@ package environnement; ...@@ -2,5 +2,4 @@ package environnement;
public class Physique { public class Physique {
public static final double g = 3000; // pesanteur public static final double g = 3000; // pesanteur
public static final double lambda = 0.05; // coefficient de frottements
} }
package jeu; package jeu;
import engine.Game; import engine.Game;
import engine.GameEngineGraphical; import environnement.Coordonnees;
import environnement.Physique;
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.ArrayList;
import entity.Character;
import static jeu.Painter.charac;
public class Jeu implements Game{ public class Jeu implements Game{
private static Coordonnees coordSol; //coordonnees du sol (en realite juste Z nous interesse)
public static double commandX; // pour la commande deplacements static Character charac;
/*private static ArrayList<Double> A; // pour mes tests, ne pas faire attention
public static double commandZ; // pour la commande deplacements int n;*/ // idem
public Jeu(String source) { public Jeu(String source) {
BufferedReader helpReader; BufferedReader helpReader;
/*A = new ArrayList<Double>();
n = 0;*/
charac = new entity.Character(new Coordonnees(200, 300), 1500, 1);
coordSol = charac.getCoord();
try { try {
helpReader = new BufferedReader(new FileReader(source)); helpReader = new BufferedReader(new FileReader(source));
String line; String line;
...@@ -39,7 +44,7 @@ public class Jeu implements Game{ ...@@ -39,7 +44,7 @@ public class Jeu implements Game{
System.out.println(charac.getCoord().getZ()); System.out.println(charac.getCoord().getZ());
double comX,comZ; double comX,comZ;
int a = 1; int a = 1;
int n = 0; //tentative de faire une commande selon z qui décroit au cours du temps
comX = 0; comX = 0;
comZ = 0; comZ = 0;
...@@ -49,27 +54,22 @@ public class Jeu implements Game{ ...@@ -49,27 +54,22 @@ public class Jeu implements Game{
if (Right) { if (Right) {
comX = -charac.getVitesseMax()*Physique.lambda; comX = -charac.getVitesseMax();
} }
else if (Left) { else if (Left) {
comX = charac.getVitesseMax() * Physique.lambda; comX = charac.getVitesseMax();
} }
if (Jump) { if (Jump) {
if (charac.getCoord().getZ() < 80){a = 0;} if (charac.getCoord().getZ() < coordSol.getZ())a = 0;
else comZ = 300000 * charac.getVitesseMax() * charac.getM()*Math.exp(-n*GameEngineGraphical.getDeltaT()*Math.pow(10, -3)); else {comZ = 400*charac.getVitesseMax();/*A.add(charac.getCoord().getZ());n++;*/}
} }
else { else {
if (charac.getCoord().getZ() < 80) { //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
a = 0; a = 0;
} }
else{ else{
a = 1; a = 1;
n = 0;
} }
/*else{
a = 1;
}*/
} }
charac.deplacements(comX, comZ, a); charac.deplacements(comX, comZ, a);
...@@ -78,7 +78,15 @@ public class Jeu implements Game{ ...@@ -78,7 +78,15 @@ public class Jeu implements Game{
@Override @Override
public boolean isFinished() { public boolean isFinished() {
// le jeu n'est jamais fini // le jeu n'est jamais fini
/*if (n >= 10){
System.out.println(A.toString());
return true;
}*/
return false; return false;
} }
public static Coordonnees getCoordSol(){
return coordSol;
}
} }
\ No newline at end of file
...@@ -3,19 +3,15 @@ package jeu; ...@@ -3,19 +3,15 @@ package jeu;
import engine.GamePainter; import engine.GamePainter;
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import entity.Character; import static jeu.Jeu.charac;
import environnement.Coordonnees;
public class Painter implements GamePainter{ public class Painter implements GamePainter{
protected static final int WIDTH = 1000; protected static final int WIDTH = 1000;
protected static final int HEIGHT = 1000; protected static final int HEIGHT = 1000;
public static Character charac;
public Painter() { 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 @Override
......
No preview for this file type
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment