旧问题多次搜索但我仍然不明白我做错了什么xD,这是我的代码: `
package dev.codenmore.tilegame.worlds;
import dev.codenmore.tilegame.Utils;
import dev.codenmore.tilegame.objects.Objects;
import java.awt.*;
public class World {
public class Object {
private int id = 0,
x = 0,
y = 0;
public Object(){
}
public void setId(int id) {
this.id = id;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
}
private int width, height;
private int spawnX, spawnY;
private int x, y, id, nr = 0;
private Object[] objects;
public World(String path){
loadWorld(path);
}
public void tick(){
}
public void render(Graphics g){
int i = 0;
for(; i <(width*height)/3; i++){
getObject(i).render(g, objects[i].x, objects[i].y);
}
}
public Objects getObject(int i){
Objects o = Objects.objects[objects[i].id];
if(o == null)
return Objects.alpha;
return o;
}
private void loadWorld(String path){
String file = Utils.loadFileAsString(path);
String[] tokens = file.split("\\s+");
width = Utils.parseInt(tokens[0]);
height = Utils.parseInt(tokens[1]);
spawnX = Utils.parseInt(tokens[2]);
spawnY = Utils.parseInt(tokens[3]);
objects = new Object[width*height/3];
for(int i = 4; i < width*height+3; i += 3){
id = Utils.parseInt(tokens[i]);
x = Utils.parseInt(tokens[i+1]);
y = Utils.parseInt(tokens[i+2]);
objects[nr].setId(id);
objects[nr].setX(x);
objects[nr].setY(y);
nr++;
}
}
}
` 当我试图将数据写入我的结构时,错误发生在第64行,这告诉我正在尝试写入空内存,但我不知道如何自己处理这个。除此之外我还有第二个问题,这是最好的方法吗?我的意思是读取文件并将数据写入结构这里是我的文件:
6 3
960 540
0 0 0 255 0 0
2 0 500 2 1620 500
1 0 790 255 0 0
答案 0 :(得分:0)
嗯,不是因为它中的id,x,y是私有的,你在这个类中没有setter?因此,您无法访问这些字段。
我尝试在Object类中添加setter,然后使用objects[nr].id = id;
而不是objects[nr].setId(id);