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;
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(){
......
......@@ -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;
}
......
......@@ -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
}
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
......@@ -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
......
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