diff --git a/MAVENProject/PlanUML.puml b/MAVENProject/PlanUML.puml
index 4bde9d3363365288fdefe841dfe5729bbba01ae9..42c30d5f9872ac8843b34629668ed0dd12098408 100644
--- a/MAVENProject/PlanUML.puml
+++ b/MAVENProject/PlanUML.puml
@@ -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)
 }
 
 
@@ -117,5 +121,14 @@ class jeu.Jeu{
 + void evolve(Cmd)
 + boolean isFinished()
 }
+<<<<<<< HEAD
+class environment.Physique{
+- double g
+- double lambda
+}
+=======
+
+
 
+>>>>>>> b21761b421591b5fad482fd94972d5eb53ff8a31
 @enduml
\ No newline at end of file
diff --git a/MAVENProject/pom.xml b/MAVENProject/pom.xml
index 5ec1364affc745197437648a5faa2d415c752c68..60902a9c62ec07ceb2737e97ffaaea713a635eac 100644
--- a/MAVENProject/pom.xml
+++ b/MAVENProject/pom.xml
@@ -8,6 +8,7 @@
     <artifactId>MAVENProject</artifactId>
     <version>1.0-SNAPSHOT</version>
 
+
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
diff --git a/MAVENProject/src/main/java/engine/Cmd.java b/MAVENProject/src/main/java/engine/Cmd.java
deleted file mode 100644
index c4554b05b9737cabdafadd96efd3b453609a93a8..0000000000000000000000000000000000000000
--- a/MAVENProject/src/main/java/engine/Cmd.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package engine;
-
-/**
- * @author Horatiu Cirstea
- *
- */
-public enum Cmd {
-	 LEFT,RIGHT,JUMP,IDLE;
-}
diff --git a/MAVENProject/src/main/java/engine/Game.java b/MAVENProject/src/main/java/engine/Game.java
index 12005596b711bcf72fcc217fd91a57fe0b3998db..bfb72c772c080d8c7aae675cfa296e3a6ba4c060 100644
--- a/MAVENProject/src/main/java/engine/Game.java
+++ b/MAVENProject/src/main/java/engine/Game.java
@@ -1,5 +1,7 @@
 package engine;
 
+import java.util.ArrayList;
+
 /**
  * @author Horatiu Cirstea, Vincent Thomas
  *
@@ -14,7 +16,7 @@ public interface Game {
 	 * @param userCmd
 	 *            commande utilisateur
 	 */
-	public void evolve(Cmd userCmd);
+	public void evolve(ArrayList userCmd);
 
 	/**
 	 * @return true si et seulement si le jeu est fini
diff --git a/MAVENProject/src/main/java/engine/GameController.java b/MAVENProject/src/main/java/engine/GameController.java
index 461a610c19b38db3408f0f2de88470771e19a300..915c9ad9b72cae4795d854f3d6deac21cc8256f6 100644
--- a/MAVENProject/src/main/java/engine/GameController.java
+++ b/MAVENProject/src/main/java/engine/GameController.java
@@ -1,6 +1,7 @@
 package engine;
 
 import java.awt.event.KeyListener;
+import java.util.ArrayList;
 
 /**
  * @author Horatiu Cirstea
@@ -13,9 +14,9 @@ public interface GameController extends KeyListener {
 	/**
 	 * quand on demande les commandes, le controleur retourne la commande en
 	 * cours
-	 * 
+	 *
 	 * @return commande faite par le joueur
 	 */
-	public Cmd getCommand();
+	public ArrayList getCommand();
 
 }
diff --git a/MAVENProject/src/main/java/engine/GameEngineGraphical.java b/MAVENProject/src/main/java/engine/GameEngineGraphical.java
index c2d643da69e7822bd42e23e094fd9bf83454cfd9..6525e8a7123bcb5722f7daa14903341228ebfcf4 100644
--- a/MAVENProject/src/main/java/engine/GameEngineGraphical.java
+++ b/MAVENProject/src/main/java/engine/GameEngineGraphical.java
@@ -1,5 +1,7 @@
 package engine;
 
+import java.util.ArrayList;
+
 /**
  * @author Horatiu Cirstea, Vincent Thomas
  *
@@ -28,6 +30,8 @@ public class GameEngineGraphical {
 	 */
 	private GraphicalInterface gui;
 
+	private final static int deltaT = 1;
+
 	/**
 	 * construit un moteur
 	 * 
@@ -57,14 +61,19 @@ public class GameEngineGraphical {
 		// boucle de game
 		while (!this.game.isFinished()) {
 			// demande controle utilisateur
-			Cmd c = this.gameController.getCommand();
+			ArrayList a = this.gameController.getCommand(); //
 			// fait evoluer le game
-			this.game.evolve(c);
+			this.game.evolve(a);
 			// 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;
+	}
+	
+
 }
diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java
index c08c88553340fb3b12b0918c5949451dce350c30..0da5174f072484eb5d831f019792cd1abe70d5c7 100644
--- a/MAVENProject/src/main/java/entity/Character.java
+++ b/MAVENProject/src/main/java/entity/Character.java
@@ -1,21 +1,68 @@
 package entity;
 
+import engine.GameEngineGraphical;
 import environnement.Coordonnees;
+import environnement.Physique;
 
 public class Character extends Entity{
-    Coordonnees coord;
-    int vitesseMax; // vitesse max
+    //Coordonnees coord;
+    //double vitesseMax; // vitesse max
+    double vitesseActuX = 0; // vitesse actuelle supposée nulle au départ
+    double vitesseActuZ = 0;
+    double m;
 
-    public Character(Coordonnees c,int vitesseMax){
+    public Character(Coordonnees c,int vitesseMax,double m){
         super(c,vitesseMax);
+        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 = GameEngineGraphical.getDeltaT()*Math.pow(10, -3); // pas de temps remis en secondes
 
-    public void deplacements(){
+        //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();
+        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
+        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;
 
-    }
 
+        
+    }
+    @Override
     public void attaque(){
 
     }
+
+    public double getVitesseMax() {
+        return vitesseMax;
+    }
+
+    public double getVitesseActuX() {
+        return vitesseActuX;
+    }
+
+    public double getVitesseActuZ() {
+        return vitesseActuZ;
+    }
+
+    public double getM() {
+        return m;
+    }
+
+    
 }
diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java
index d0c9da22087bb567c35a0d221a1b8fbfab22a6b6..a347f8dcdb90dd4ab97a853cfd1a04862ef0e587 100644
--- a/MAVENProject/src/main/java/entity/Entity.java
+++ b/MAVENProject/src/main/java/entity/Entity.java
@@ -3,13 +3,20 @@ 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
+    public void setCoord(Coordonnees coord) {
+        this.coord = coord;
+    }
+    
 }
diff --git a/MAVENProject/src/main/java/environnement/Coordonnees.java b/MAVENProject/src/main/java/environnement/Coordonnees.java
index 11ca66d0d930c4c5eb4dda4bf6ff02a82d558d1c..9ae4f99c978c169741d0414b565d5293bc32df66 100644
--- a/MAVENProject/src/main/java/environnement/Coordonnees.java
+++ b/MAVENProject/src/main/java/environnement/Coordonnees.java
@@ -1,19 +1,36 @@
 package environnement;
 
-import java.lang.ProcessBuilder.Redirect.Type;
-
-import entity.Entity;
 
 public class Coordonnees {
-    int x;
-    int z;
+    private double x;
+    private double z;
 
-    public Coordonnees(int x,int z){
-        this.x = x;
-        this.z = z;
+    public Coordonnees(double newX,double newZ){
+        this.x = newX;
+        this.z = newZ;
     }
 
     public static int distance(Object o1,Object o2){
-        if ((o1 instanceof Entity) || (o2 instanceof Entity))return Math.sqrt(Math.pow(o1.coord.x - o2.coord.x, 2) + Math.pow(o1.coord.y - o2.coord.y,2));
+        //if (((o1 instanceof Entity) || (o1 instanceof Bloc)) && ((o2 instanceof Entity) || (o2 instanceof Bloc)))return Math.sqrt(Math.pow(o1.coord.x - o2.coord.x, 2) + Math.pow(o1.coord.y - o2.coord.y,2));
+        //a retoucher selon le reste du programme
+        return 0;
+    }
+
+    public double getX() {
+        return x;
+    }
+
+    public double getZ() {
+        return z;
+    }
+
+    public void evolveX(double var){
+        // evolution des coordonnees en x
+        this.x += var;
+    }
+
+    public void evolveZ(double var){
+        // evolution des coordonnees en z
+        this.z += var;
     }
 }
diff --git a/MAVENProject/src/main/java/environnement/Physique.java b/MAVENProject/src/main/java/environnement/Physique.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b8605459ad062a2fb9bcaeed4342e270080381a
--- /dev/null
+++ b/MAVENProject/src/main/java/environnement/Physique.java
@@ -0,0 +1,6 @@
+package environnement;
+
+public class Physique {
+    public static final double g = 10000; // pesanteur
+    public static final double lambda = 0.05; // coefficient de frottements
+}
diff --git a/MAVENProject/src/main/java/jeu/Controller.java b/MAVENProject/src/main/java/jeu/Controller.java
new file mode 100644
index 0000000000000000000000000000000000000000..9626558cd2dea6277044bf3f7a8a503cc53f9cb2
--- /dev/null
+++ b/MAVENProject/src/main/java/jeu/Controller.java
@@ -0,0 +1,64 @@
+package jeu;
+
+import engine.GameController;
+
+import java.awt.event.KeyEvent;
+import java.util.ArrayList;
+
+public class Controller implements GameController{
+
+    private boolean isRightPressed, isLeftPressed, isSpacePressed;
+    /*
+    * commande en cours
+    */
+
+    /*
+    * construction du controleur par defaut le controleur n'a pas de commande
+    */
+
+    public Controller() {
+        isRightPressed = false; isLeftPressed = false; isSpacePressed = false;
+    }
+    /**
+     * getCommand retourne une list de booleans sous la forme [isRightPressed, isLeftPressed, isSpacePressed]
+     */
+    @Override
+    public ArrayList getCommand() {
+        ArrayList a = new ArrayList<Boolean>();
+        a.add(isRightPressed);
+        a.add(isLeftPressed);
+        a.add(isSpacePressed);
+        return a;
+    }
+    @Override
+
+    public void keyPressed(KeyEvent e) {
+
+        switch (e.getKeyCode()) {
+            // si on appuie sur une touche ci dessous le boolean devient vraie.
+            case KeyEvent.VK_RIGHT: isRightPressed = true; break;
+            case KeyEvent.VK_LEFT: isLeftPressed = true; break;
+            case KeyEvent.VK_SPACE: isSpacePressed = true; break;
+        }
+    }
+    @Override
+    public void keyReleased(KeyEvent e) {
+        switch(e.getKeyCode()) {
+            case KeyEvent.VK_RIGHT:
+                isRightPressed = false;
+                break;
+            case KeyEvent.VK_LEFT:
+                isLeftPressed = false;
+                break;
+            case KeyEvent.VK_SPACE:
+                isSpacePressed = false;
+                break;
+        }
+    }
+    @Override
+
+    public void keyTyped(KeyEvent e) {
+
+    }
+
+}
\ No newline at end of file
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
new file mode 100644
index 0000000000000000000000000000000000000000..075979e2dca083787693f43eed5cae80b2bb8e90
--- /dev/null
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -0,0 +1,78 @@
+package jeu;
+
+import engine.Game;
+import environnement.Physique;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+
+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
+
+    public Jeu(String source) {
+        BufferedReader helpReader;
+        try {
+            helpReader = new BufferedReader(new FileReader(source));
+            String line;
+            while ((line = helpReader.readLine()) != null) {
+                System.out.println(line);
+            }
+            helpReader.close();
+        } catch (IOException e) {
+            System.out.println("Help not available");
+        }
+    }
+
+    @Override
+    public void evolve(ArrayList command) {  // command est sous la forme list de Boolean qui représente les touches préssées. Voir Controller pour la compositions de cet list.
+        System.out.println("Execute "+command);
+        System.out.println(charac.getCoord().getX());
+        System.out.println(charac.getCoord().getZ());
+        double comX,comZ;
+        int a = 1;
+        comX = 0;
+        comZ = 0;
+
+        boolean Right = (boolean) command.get(0);
+        boolean Left = (boolean) command.get(0);
+        boolean Jump = (boolean) command.get(0);
+
+        
+        if (Right) {
+            comX = -charac.getVitesseMax()*Physique.lambda;
+        }
+        if (Left) {
+            comX = charac.getVitesseMax() * Physique.lambda;
+        }
+        if (Jump) {
+            if (charac.getCoord().getZ() < 80) a = 0;
+            else comZ = 30000 * charac.getVitesseMax() * charac.getM();
+        }
+        else {
+            if (charac.getCoord().getZ() >= 80) { //a retoucher, j'ai besoin d'autres choses pour avancer
+                a = 1;
+            }
+
+                /*else{
+                    a = 1;
+                }*/
+        
+        }
+        charac.deplacements(comX, comZ, a);
+    }
+
+    @Override
+    public boolean isFinished() {
+        // le jeu n'est jamais fini
+        return false;
+    }
+    
+}
\ No newline at end of file
diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b70699d139e0b6114af8f34e467acfab88cce45
--- /dev/null
+++ b/MAVENProject/src/main/java/jeu/Painter.java
@@ -0,0 +1,39 @@
+package jeu;
+
+import engine.GamePainter;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import entity.Character;
+import environnement.Coordonnees;
+
+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
+    public void draw(BufferedImage im) {
+        Graphics2D crayon = (Graphics2D) im.getGraphics();
+        crayon.setColor(Color.blue);
+        int x = (int) charac.getCoord().getX();
+        int y = (int) charac.getCoord().getZ();
+        crayon.fillOval(x,y,10,10);
+    }
+
+    @Override
+    public int getWidth() {
+        return WIDTH;
+    }
+
+    @Override
+    public int getHeight() {
+        return HEIGHT;
+    }
+}
diff --git a/MAVENProject/src/main/java/model/PacmanController.java b/MAVENProject/src/main/java/model/PacmanController.java
deleted file mode 100644
index 15f50bbfebd08fc0b6dc2cee6047d774f8b0fdc6..0000000000000000000000000000000000000000
--- a/MAVENProject/src/main/java/model/PacmanController.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package model;
-
-import java.awt.event.KeyEvent;
-
-import engine.Cmd;
-import engine.GameController;
-
-
-/**
- * @author Horatiu Cirstea, Vincent Thomas
- *
- * controleur de type KeyListener
- * 
- */
-public class PacmanController implements GameController {
-
-	/**
-	 * commande en cours
-	 */
-	private Cmd commandeEnCours;
-	
-	/**
-	 * construction du controleur par defaut le controleur n'a pas de commande
-	 */
-	public PacmanController() {
-		this.commandeEnCours = Cmd.IDLE;
-	}
-
-	/**
-	 * quand on demande les commandes, le controleur retourne la commande en
-	 * cours
-	 * 
-	 * @return commande faite par le joueur
-	 */
-	public Cmd getCommand() {
-		return this.commandeEnCours;
-	}
-
-	@Override
-	/**
-	 * met a jour les commandes en fonctions des touches appuyees
-	 */
-	public void keyPressed(KeyEvent e) {
-
-		switch (e.getKeyChar()) {
-		// si on appuie sur 'q',commande joueur est gauche
-		case 'q':
-		case 'Q':
-			this.commandeEnCours = Cmd.LEFT;
-			break;
-		case 'd':
-		case 'D':
-			this.commandeEnCours = Cmd.RIGHT;
-			break;
-		case ' ':
-			this.commandeEnCours = Cmd.JUMP;
-			break;
-		}
-
-	}
-
-	@Override
-	/**
-	 * met a jour les commandes quand le joueur relache une touche
-	 */
-	public void keyReleased(KeyEvent e) {
-		this.commandeEnCours = Cmd.IDLE;
-	}
-
-	@Override
-	/**
-	 * ne fait rien
-	 */
-	public void keyTyped(KeyEvent e) {
-
-	}
-
-}
diff --git a/MAVENProject/src/main/java/model/PacmanGame.java b/MAVENProject/src/main/java/model/PacmanGame.java
deleted file mode 100644
index af4065ac8a97cfb5195e23af58e9f6baeb990fff..0000000000000000000000000000000000000000
--- a/MAVENProject/src/main/java/model/PacmanGame.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package model;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-
-import engine.Cmd;
-import engine.Game;
-
-/**
- * @author Horatiu Cirstea, Vincent Thomas
- *
- *         Version avec personnage qui peut se deplacer. A completer dans les
- *         versions suivantes.
- * 
- */
-public class PacmanGame implements Game {
-
-	/**
-	 * constructeur avec fichier source pour le help
-	 * 
-	 */
-	public PacmanGame(String source) {
-		BufferedReader helpReader;
-		try {
-			helpReader = new BufferedReader(new FileReader(source));
-			String ligne;
-			while ((ligne = helpReader.readLine()) != null) {
-				System.out.println(ligne);
-			}
-			helpReader.close();
-		} catch (IOException e) {
-			System.out.println("Help not available");
-		}
-	}
-
-	/**
-	 * faire evoluer le jeu suite a une commande
-	 * 
-	 * @param commande
-	 */
-	@Override
-	public void evolve(Cmd commande) {
-		System.out.println("Execute "+commande);
-		if (commande == Cmd.LEFT) {
-
-		}
-	}
-
-	/**
-	 * verifier si le jeu est fini
-	 */
-	@Override
-	public boolean isFinished() {
-		// le jeu n'est jamais fini
-		return false;
-	}
-
-}
diff --git a/MAVENProject/src/main/java/model/PacmanPainter.java b/MAVENProject/src/main/java/model/PacmanPainter.java
deleted file mode 100644
index 8052e6cc077ff8ae505be79a1ffd1f622fccaccf..0000000000000000000000000000000000000000
--- a/MAVENProject/src/main/java/model/PacmanPainter.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package model;
-
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.image.BufferedImage;
-
-import engine.GamePainter;
-
-/**
- * @author Horatiu Cirstea, Vincent Thomas
- *
- * afficheur graphique pour le game
- * 
- */
-public class PacmanPainter implements GamePainter {
-
-	/**
-	 * la taille des cases
-	 */
-	protected static final int WIDTH = 1000;
-	protected static final int HEIGHT = 100;
-
-	/**
-	 * appelle constructeur parent
-	 * 
-	 * @param game
-	 *            le jeutest a afficher
-	 */
-	public PacmanPainter() {
-	}
-
-	/**
-	 * methode  redefinie de Afficheur retourne une image du jeu
-	 */
-	@Override
-	public void draw(BufferedImage im) {
-		Graphics2D crayon = (Graphics2D) im.getGraphics();
-		crayon.setColor(Color.blue);
-		crayon.fillOval(20,20,10,10);
-	}
-
-	@Override
-	public int getWidth() {
-		return WIDTH;
-	}
-
-	@Override
-	public int getHeight() {
-		return HEIGHT;
-	}
-
-}
diff --git a/MAVENProject/src/main/java/start/Main.java b/MAVENProject/src/main/java/start/Main.java
index f75076d011d5a8c067277ccf675dc1be66fd5e64..2f32ec436e408e915fe62c6e5cbf1bed1b0da739 100644
--- a/MAVENProject/src/main/java/start/Main.java
+++ b/MAVENProject/src/main/java/start/Main.java
@@ -1,9 +1,9 @@
 package start;
 
-import model.PacmanPainter;
+import jeu.Painter;
 import engine.GameEngineGraphical;
-import model.PacmanController;
-import model.PacmanGame;
+import jeu.Controller;
+import jeu.Jeu;
 
 /**
  * lancement du moteur avec le jeu
@@ -13,9 +13,9 @@ public class Main {
 	public static void main(String[] args) throws InterruptedException {
 
 		// creation du jeu particulier et de son afficheur
-		PacmanGame game = new PacmanGame("helpFilePacman.txt");
-		PacmanPainter painter = new PacmanPainter();
-		PacmanController controller = new PacmanController();
+		Jeu game = new Jeu("helpFilePacman.txt");
+		Painter painter = new Painter();
+		Controller controller = new Controller();
 
 		// classe qui lance le moteur de jeu generique
 		GameEngineGraphical engine = new GameEngineGraphical(game, painter, controller);