title: Collision Detection with Java, Slick2D and Tiled Map Editor
body: <p>I've been stuck on collision detection and how to handle it for a VERY long time. I need help understanding how to use collision detection with Tiled map editor. I have the TMX file parsed and displayed with a player, camera and keyboard movement. I'm not sure how to about doing to collision. My map has 2 layers, one for grass and tiles you can walk on, the other is objectLayer. I've seen people saying I should loop through all the tiles in an object layer and assign rectangles to them. I've got NO idea how to do that and I'm looking for some insight.</p>
  
  <p>My main question is: how do I loop through my layer and get all the tiles and assign rectangles to them.</p>
  
  <p>Game Class:</p>
  
  <pre><code>    public class Game extends BasicGameState {
  
  Player player;
  Camera cam;
  Map map = new Map();
  
  public void init(GameContainer container, StateBasedGame sbg) throws SlickException {
      map.init();
      cam = new Camera(0, 0);
      player = new Player(new Image("res/textures/player.png"), container.getWidth() / 2, container.getHeight() / 2, 32, 32);
  }
  
  public void update(GameContainer container, StateBasedGame sbg, int delta) throws SlickException {
      cam.tick(player);
      player.update(container, delta, map);
  }
  
  public void render(GameContainer container, StateBasedGame sbg, Graphics g) throws SlickException {
      g.translate(-cam.getX(), -cam.getY());
          map.render();
          player.render(g);
      g.translate(cam.getX(), cam.getY());
  }
  
  public int getID() {
      return 1;
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Player Class:</p>
  
  <pre><code>    public class Player {
  
  float x, y;
  
  int width, height;
  double velX = 0.4;
  double velY = 0.4;
  
  Image img;
  
  public Player(Image img, float x, float y, int width, int height) {
      this.img = img;
      this.x = x;
      this.y = y;
      this.width = width;
      this.height = height;
  }
  
  public void init() throws SlickException {
  
  }
  
  public void update(GameContainer container, int delta, Map map) {
      Input input = container.getInput();
  
      if (input.isKeyDown(Input.KEY_D)) x += velX;
      if (input.isKeyDown(Input.KEY_A)) x -= velX;
      if (input.isKeyDown(Input.KEY_W)) y -= velY;
      if (input.isKeyDown(Input.KEY_S)) y += velY;
  
  }
  
  public void render(Graphics g) {
      //g.scale(-2, -2);
      g.drawImage(img, x, y);
  }
  
  public float getX() {
      return x;
  }
  
  public float getY() {
      return y;
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Map class:</p>
  
  <pre><code>    public class Map {
  
  TiledMap map;
  
  public void init() throws SlickException {
      map = new TiledMap("res/map/zenith.tmx");
  }
  
  public void render() throws SlickException {
      map.render(0, 0);
  }
  </code></pre>
  
  <p>}</p>