对不起,我知道这个问题已经被无数次询问了,但是我无法找到这里和我的工作之间的区别,这是无效的。
另外,如果有更好的方法来实现我想要做的事情,请告诉我,我现在只是在学校学习Java,所以我不知道自己在做什么......
所以,我的问题,我们应该为课堂创造一个游戏,我决定做Pacman并且它的工作正常。我唯一想要改变的是能够保存和加载你创建的级别,我想我会通过将它们存储在文件中来做到这一点。
现在,我的等级由我称之为“FELD”的正方形组成,这就是它的样子:
import java.io.Serializable;
public class FELD implements Serializable
{
private static final long serialVersionUID = 1L;
public int inhalt, inhaltneu; //content, 0=wall, 1=food, 2=empty 3=start
public int x, y;
public static int groesse; //size of the square
public FELD(int a, int b)
{
x=a*groesse;
y=b*groesse;
PACMAN.zf.zeichneRechteck(x, y, groesse, groesse); //draws a rectangle using a class we have to use in school
inhalt=0;
}
}
我遗漏了另外两种方法,因为它们对此并不重要。
现在,为了保存它们,我创建了一个名为“LEVELFILE”的类:
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.io.IOException;
import java.io.FileNotFoundException;;
public class LEVELFILE
{
public FELD[][] lvl;
public LEVELFILE()
{
}
public boolean speichern(FELD[][] a) {
lvl=a;
String name="lvl1.ser";
try {
FileOutputStream fos = new FileOutputStream(name);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(lvl);
oos.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
PACMAN.zf.fuelleRechteck(0, 0, 100, 100, "rot"); //draws a red rectangle to tell me it's done saving, works
return true;
}
public FELD[][] ladenlvl1() {
String name="lvl1.ser";
try {
FileInputStream fis = new FileInputStream(name);
ObjectInputStream ois = new ObjectInputStream(fis);
lvl = (FELD[][]) ois.readObject();
ois.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
PACMAN.zf.fuelleRechteck(0, 0, 100, 100, "gruen"); //draws a green rectangle to tell me it's done loading, doesn't happen
return lvl;
}
}
所以,有一些事情,首先,当lvl是一个二维数组时,可以只说oos.writeObject(lvl)吗?
阅读同样的事情,那很好吗?
另外,这是什么printStackTrace();?我发现在这里多次,所以我只是复制了它,但它实际上做了什么?
由于我没有得到绿色矩形,程序应该绘制,我想它会以某种方式卡住,但我不知道它会在哪里。这就是我希望你们能告诉我的。
另外,如果您知道将我的关卡保存到文件的更好/更简单的方法,请告诉我,正如我所说,我对此一无所知。
而且,既然这是我们在学校一直在做的项目,我确实先问过我的老师,但他说,他以前从未使用过ObjectOutputStream和ObjectInputStream,所以他无法帮助我,这就是为什么我在这里的权利现在