title: java Tile based game ArrayIndexOutOfBoundsException error
body: <p>I have ArrayIndexOutOfBoundsException error in getTile function which is in the World class, my problem is that i cannot floor the background with background image, I cannot add other tiles i got empty window and these errors.</p>
  
  <pre><code>package com.game.Tiles;
  import java.awt.Graphics;
  import java.awt.image.BufferedImage;
  
  public class Tile {
      // static stuff
      public static Tile[] tiles = new Tile[512];
      public static Tile background = new Background(0);
      public static Tile target = new Target(1);
      // class
  
      public static final int TILE_WIDTH = 50, TILE_HEIGHT = 50;
      protected BufferedImage texture;
      protected final int id;
  
      public Tile(BufferedImage texture, int id) {
          super();
          this.texture = texture;
          this.id = id;
          tiles[id] = this; // class ı tile a ekliyoruz yukardan gelen id ile
      }
  
      public void tick(){
  
      }
      public void render(Graphics graphic, int positionX, int positionY){
          graphic.drawImage(texture, positionX, positionY, TILE_WIDTH, TILE_HEIGHT, null);
      }
  
      public int getId() {
          return this.id;
      }
      public boolean isPasseble()
      {
          return false;
      }
  }
  
  
  package com.game.world;
  
  import java.awt.Graphics;
  
  import com.game.Tiles.Tile;
  
  public class World {
  
  
      private int height, width;
      private int[][] tiles;
  
      public World(){
          this.loadWorld();
  
      }
      public void tick(){
  
      }
      public void render(Graphics graphic){
          for (int y = 0; y &lt; this.height; y++) {
              for(int x = 0; y &lt; this.width; x++){
                  this.getTile(x, y).render(graphic, x * Tile.TILE_HEIGHT, y * Tile.TILE_WIDTH);
              }
          }
      }
      public Tile getTile(int x, int y){
          Tile t = Tile.tiles[this.tiles[x][y]];
          if(t == null)
              return Tile.background;
  
          return t;
      }
      private void loadWorld(){
          this.width = 30;
          this.height = 30;
          this.tiles = new int[this.width][this.height];
          for (int x = 0; x &lt; this.width; x++) {
              for (int y = 0; y &lt; this.height; y++) {
                  this.tiles[x][y] = 0;
              }
          }
  
      }
  }
  </code></pre>
  
  <p>Errors:</p>
  
  <blockquote>
    <p>Exception in thread "Thread-0"
    java.lang.ArrayIndexOutOfBoundsException: 30
          at com.game.world.World.getTile(World.java:28)
          at com.game.world.World.render(World.java:23)
          at com.game.States.GameState.render(GameState.java:29)
          at com.game.Launcher.Game.render(Game.java:73)
          at com.game.Launcher.Game.run(Game.java:98)
          at java.lang.Thread.run(Thread.java:745)</p>
  </blockquote>