Skip to content
Snippets Groups Projects
Commit b21761b4 authored by Azurlors's avatar Azurlors
Browse files

Ajout du déplacement du personnage. Cela ne fonctionne pas car il faut mettre...

Ajout du déplacement du personnage. Cela ne fonctionne pas car il faut mettre le système de double créer par Louis en entier ce que j'ai par encore fait. Louis fadrat que tu expliques le fonctionnement de déplacements.
parent a06ff548
No related branches found
No related tags found
No related merge requests found
......@@ -90,9 +90,13 @@ class environment.Object {
class environment.Obstacle{
}
class environment.Coordonnees{
+ int x
+ int z
- int x
- int z
+ {static} int distance(Object,Object)
+ double getX()
+ double getZ()
+ void evolveX(double var)
+ void evolveZ(double var)
}
......@@ -118,4 +122,6 @@ class jeu.Jeu{
+ boolean isFinished()
}
@enduml
\ No newline at end of file
......@@ -4,7 +4,7 @@ import environnement.Coordonnees;
import environnement.Physique;
public class Character extends Entity{
Coordonnees coord;
double vitesseMax; // vitesse max
double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ
double vitesseActuZ = 0;
......@@ -15,15 +15,16 @@ public class Character extends Entity{
this.m = m;
}
@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
//on actualise les positions
double newX,newZ;
newX = -Physique.lambda/m*(vitesseActuX - commandX)*Math.exp(-Physique.lambda/m*delta) + commandX*delta + coord.getX();
newZ = ((alpha-1)*Physique.g + commandZ)/2*delta*delta + vitesseActuZ*delta + coord.getZ();
coord = new Coordonnees(newX, newZ);
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);
//on actualise les vitesses
vitesseActuX = (vitesseActuX - commandX)*Math.exp(-Physique.lambda*delta/m);
......@@ -32,7 +33,7 @@ public class Character extends Entity{
}
@Override
public void attaque(){
}
......
......@@ -3,13 +3,16 @@ package entity;
import environnement.Coordonnees;
public abstract class Entity {
Coordonnees coord;
private Coordonnees coord;
int vitesseMax;
public Entity(Coordonnees c,int vitesseMax){
this.coord = c;
this.vitesseMax = vitesseMax;
}
public void deplacements(){}
public void deplacements(double commandX, double commandZ, int alpha){}
public void attaque(){}
public Coordonnees getCoord(){
return this.coord;
} // Pour retourner les coordonées
}
......@@ -5,10 +5,19 @@ import engine.Game;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import static jeu.Painter.coordonnees;
import entity.Character;
import environnement.Coordonnees;
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
public static double commandZ; // pour la commande deplacements
public Jeu(String source) {
BufferedReader helpReader;
try {
......@@ -26,16 +35,31 @@ public class Jeu implements Game{
@Override
public void evolve(Cmd commande) {
System.out.println("Execute "+commande);
System.out.println(coordonnees.getX()); // test pour debugger
System.out.println(coordonnees.getZ());
System.out.println(personnage.getCoord().getX());
switch (commande) {
case LEFT:
coordonnees.evolveX(-2);
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:
coordonnees.evolveX(2);
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);
break;
}
}
......
package jeu;
import engine.GamePainter;
import environnement.Coordonnees;
import java.awt.*;
import java.awt.image.BufferedImage;
import static jeu.Jeu.coordonnees;
public class Painter implements GamePainter{
protected static final int WIDTH = 1000;
protected static final int HEIGHT = 100;
public static Coordonnees coordonnees;
public Painter() {
coordonnees = new Coordonnees(20,80);
}
@Override
public void draw(BufferedImage im) {
Graphics2D crayon = (Graphics2D) im.getGraphics();
crayon.setColor(Color.blue);
int x = new Double(coordonnees.getX()).intValue();
int y = new Double(coordonnees.getZ()).intValue();
int x = (int)Math.round(coordonnees.getX());
int y = (int)Math.round(coordonnees.getZ());
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