title: java slick2D simulate gravity for jumping
body: <p>So I made a little game in java with slick2D,
  but I want my character to jump.
  Now I have this: </p>
  
  <pre><code>if (container.getInput().isKeyPressed(Input.KEY_UP) &amp;&amp; !jumping) { 
               verticalSpeed = -1.0f * delta;//negative value indicates an upward movement 
               jumping = true;
  
          }
          if (jumping) { 
               verticalSpeed += .007f * delta;//change this value to alter gravity strength 
  
          } 
  
          playerY += verticalSpeed;
          playerPoly.setY(playerY);
  </code></pre>
  
  <p>Well that makes my sprite jump and fall down...for ever.
  So how can you make it stop from falling when it hits the ground?
  I tried this: </p>
  
  <pre><code>if (entityCollisionWith()){
  jumping = false;
  }
  </code></pre>
  
  <p>But it doesn't work :(</p>
  
  <p>my code with jumping:</p>
  
  <pre><code>import org.newdawn.slick.Animation;
  import org.newdawn.slick.AppGameContainer;
  import org.newdawn.slick.BasicGame;    
  import org.newdawn.slick.GameContainer;
  import org.newdawn.slick.Graphics;
  import org.newdawn.slick.Image;
  import org.newdawn.slick.Input;
  import org.newdawn.slick.SlickException;
  import org.newdawn.slick.SpriteSheet;
  import org.newdawn.slick.geom.Polygon;
  import org.newdawn.slick.tiled.TiledMap;
  
  
  public class Game extends BasicGame {
  
  public BlockMap map;
  Image player = null;
  float playerX = 320;
  float playerY = 288;
  float scale = 1f;
  private Polygon playerPoly;
   boolean jumping = false; 
   float verticalSpeed = 0.0f;
  
  
  public Game() {
      super("my game");
  }
  public void init(GameContainer container) throws SlickException {
           map = new BlockMap("data/Map01.TMX");
           player = new Image("data/rightSprite.png");
  
           playerPoly = new Polygon(new float[]{
                  playerX,playerY,
                  playerX+17,playerY,
                  playerX+17,playerY+48,
                  playerX,playerY+48
          });
  
  }        
      public void update(GameContainer container, int delta) throws SlickException {
          if (container.getInput().isKeyDown(Input.KEY_LEFT)) {
              playerX-=0.15;
              playerPoly.setX(playerX);
              if (entityCollisionWith()){
                  playerX+=0.15;
                  playerPoly.setX(playerX);
              }
          }
          if (container.getInput().isKeyDown(Input.KEY_RIGHT)) {
  
              playerX+=0.15;
              playerPoly.setX(playerX);
              if (entityCollisionWith()){
                  playerX-=0.15;
                  playerPoly.setX(playerX);
              }
          }
          if (container.getInput().isKeyPressed(Input.KEY_UP) &amp;&amp; !jumping) { 
               verticalSpeed = -1.0f * delta;//negative value indicates an upward movement 
               jumping = true;
  
          }
          if (entityCollisionWith()){
              jumping = false;
              verticalSpeed = -1.1f;
              verticalSpeed = 0;
          }
  
          if (jumping) { 
               verticalSpeed += .01f * delta;//change this value to alter gravity strength 
  
          } 
  
          playerY += verticalSpeed;
          playerPoly.setY(playerY);
  
          if (entityCollisionWith()){
              jumping = false;
              verticalSpeed = 0;
          }
  
      }
  
  
  
      public boolean entityCollisionWith() throws SlickException {
          for (int i = 0; i &lt; BlockMap.entities.size(); i++) {
              Block entity1 = (Block) BlockMap.entities.get(i);
              if (playerPoly.intersects(entity1.poly)) {
                  return true;
              }       
          }       
          return false;
      }
  
  
  public void render(GameContainer container, Graphics g)  {
      BlockMap.tmap.render(0, 0);
      player.draw(playerX, playerY, scale);
      g.draw(playerPoly);
  }
  public static void main(String[] argv) throws SlickException {
  
      AppGameContainer container = new AppGameContainer(new Game(), 640, 480,         false);
          container.start();
  }
      }
  </code></pre>