所以,我正在制作游戏,我认为保存用户的高分(只有一个人)是一个很酷的功能,所以它可以与玩家在最后得到的分数进行比较。他们刚玩过的游戏。我认为最简单的方法是将高分写入文本文档(我实际上将其设为.dat以便用户更难编辑)然后在需要时检索它。所以,我是OOP的忠实粉丝,我创建了一个名为" HighScoreSave,"这将管理这个,然后我可以使用该对象调用save()和load()。不幸的是,在我开始之前,我对BufferedWriters,Readers,PrintWriters或任何其他类型的Java文件编辑器一无所知。所以,没有进一步的事情,这就是我所说的。我知道,它可能充斥着非传统的做法,但那就是我在这里的原因,对吗? :P
public class HighscoreSave {
String filename;
File file;
BufferedReader in;
FileWriter writer;
PrintWriter out;
Game game;
int currentScore = 0;
String currentScoreString = "";``
String highScore = "";
public HighscoreSave(Game game) {
filename = "data/highscore.dat";
file = new File(filename);
this.game = game;
}
public void save() throws IOException, NumberFormatException {
in = new BufferedReader(new FileReader(filename));
currentScore = game.getScore();
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(currentScore);
currentScoreString = sb.toString();
highScore = in.readLine();
int tempHighScore = Integer.parseInt(highScore.trim());
if(tempHighScore < currentScore){
file.delete();
file.createNewFile();
writer = new FileWriter(filename, true);
out = new PrintWriter(writer);
out.write(highScore);
}
out.close();
in.close();
}
public int load() throws IOException {
in = new BufferedReader(new FileReader(filename));
highScore = in.readLine();
int highScoreInt = Integer.parseInt(highScore);
in.close();
return highScoreInt;
}
}
基本上,我尝试做的是使用一种方法(save())来检查当前得分是否更好,如果是,则创建一个新文件,其中包含新的高分,并最终删除旧的。然后,我使用load()返回高分,以便在游戏结束时可以在我的游戏类中使用它。但是它拒绝改变文件,现在它只是一遍又一遍地写入零,零,零,导致零得分......
我错过了什么吗?我如何解决这个错误,或者有更好的方法来做到这一点吗?