В стартовом меню для моей игры я не сделаю так, чтобы, когда вы нажимаете кнопку «Продолжить», вы получаете оценку, которую вы имели в последний раз, когда вы играли , Я уже исправил код, который сохраняет оценку и код, который загружает счет, поэтому никаких проблем с кнопкой продолжения нет.Установка номера в файле до 0 при нажатии кнопки JButton
Но для кнопки «Новая игра» у меня возникают некоторые трудности. Когда эта кнопка нажата, мне нужно сделать файл, в котором хранится сброс очков (установите число внутри него на 0 вместо последнего балла). Я попытался использовать этот код внутри кнопки ActionListener
, но он не устанавливает текст внутри .dat-файла равным 0, но он добавляет 0 к концу.
try{
String zero = "0";
byte[] reset = zero.getBytes();
player.getFile().write(reset);
}catch (IOException ex){
}
Я также попытался player.setScore("0");
, который я использую, чтобы добавить 10 счет каждый раз, когда враг умирает, но потом он все равно будет получить счет из файла .dat.
Это два метода внутри класса плеера, который переносит загрузку и сохранение файла.
public void save(){
try{
getScore = new File("Score.dat");
scoreFile = new FileOutputStream(getScore);
byte[] saveScore = score.getBytes();
scoreFile.write(saveScore);
}catch(FileNotFoundException ex){
}catch(IOException ex){
}
}
public void load(){
try{
br = new BufferedReader(new FileReader("Score.dat"));
score = br.readLine();
}catch (FileNotFoundException ex){
}catch(IOException ex){
}
}
Я также попытался лишь запустить метод load()
, если нажать на кнопку «Продолжить», а не на кнопку «Новая игра», но я получаю ошибку java.lang.NullPointerException
.
Использование 'PrintWriter' не остановит его при добавлении данных каждый раз, не так ли? –
@RobI Он будет - по умолчанию PrintWriter перезапишет файл, а не добавит его. – berry120