我在世界级的getTile函数中有ArrayIndexOutOfBoundsException错误,我的问题是我无法将背景与背景图像放在一起,我无法添加其他图块我得到了空窗口和这些错误。
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 < this.height; y++) {
for(int x = 0; y < 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 < this.width; x++) {
for (int y = 0; y < this.height; y++) {
this.tiles[x][y] = 0;
}
}
}
}
错误:
线程“Thread-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:30 在com.game.world.World.getTile(World.java:28) 在com.game.world.World.render(World.java:23) 在com.game.States.GameState.render(GameState.java:29) 在com.game.Launcher.Game.render(Game.java:73) 在com.game.Launcher.Game.run(Game.java:98) 在java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:1)
这一行
for(int x = 0; y < this.width; x++){
应该是
for(int x = 0; x < this.width; x++){