保存游戏的高分时出错?

时间:2014-03-11 22:00:04

标签: java file-io java-io

所以,我正在制作游戏,我认为保存用户的高分(只有一个人)是一个很酷的功能,所以它可以与玩家在最后得到的分数进行比较。他们刚玩过的游戏。我认为最简单的方法是将高分写入文本文档(我实际上将其设为.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()返回高分,以便在游戏结束时可以在我的游戏类中使用它。但是它拒绝改变文件,现在它只是一遍又一遍地写入零,零,零,导致零得分......

我错过了什么吗?我如何解决这个错误,或者有更好的方法来做到这一点吗?

0 个答案:

没有答案