diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-03-02 09:49:47 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-03-02 09:49:47 +0100 |
| commit | 918017906477fba95334a8581d23509e28d8274c (patch) | |
| tree | 81376930a9d24e685723fedc290257bbed3293fc /src/se | |
| parent | 179d02c9d6cad1397de52418407a631472735e03 (diff) | |
| download | tdde30-918017906477fba95334a8581d23509e28d8274c.tar.gz | |
error handling
Diffstat (limited to 'src/se')
| -rw-r--r-- | src/se/liu/gusso230/tetris/Board.java | 30 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/HighscoreList.java | 14 |
2 files changed, 35 insertions, 9 deletions
diff --git a/src/se/liu/gusso230/tetris/Board.java b/src/se/liu/gusso230/tetris/Board.java index bb84d2a..311d736 100644 --- a/src/se/liu/gusso230/tetris/Board.java +++ b/src/se/liu/gusso230/tetris/Board.java @@ -4,6 +4,7 @@ import com.google.gson.Gson; import javax.swing.*; import java.io.File; +import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -46,7 +47,7 @@ public class Board { tetrominoMaker = new TetrominoMaker(); this.highscores = highscores; highscoreFile = new File("highscores.json"); - highscores.readFromFile(highscoreFile); + readHighscores(); // highscores.addHighscore(new Highscore("a", 100)); // highscores.addHighscore(new Highscore("c", 300)); // highscores.addHighscore(new Highscore("b", 200)); @@ -64,12 +65,37 @@ public class Board { } } + private void readHighscores() { + // file is written and created on game over, so no error + try { + highscores.readFromFile(highscoreFile); + } catch (FileNotFoundException ignored) {} + } + + private void writeHighscores() { + while (true) { + try { + highscores.saveToFile(highscoreFile); + return; + } catch (FileNotFoundException | SecurityException ignored) { + if (JOptionPane.showConfirmDialog(null, + "Couldn't write highscore file. Try again?", + "", + JOptionPane.YES_NO_OPTION) + == JOptionPane.NO_OPTION) + { + return; + } + } + } + } + private void gameOver() { state = GameState.GAME_OVER; //highscores.addHighscore(new Highscore(JOptionPane.showInputDialog("Your name: "), points)); highscores.addHighscore(new Highscore("woo", points)); highscores.sort(new HighscoreComparator()); - highscores.saveToFile(highscoreFile); + writeHighscores(); state = GameState.SHOWING_HIGHSCORES; } diff --git a/src/se/liu/gusso230/tetris/HighscoreList.java b/src/se/liu/gusso230/tetris/HighscoreList.java index 0a99db0..3ae14f9 100644 --- a/src/se/liu/gusso230/tetris/HighscoreList.java +++ b/src/se/liu/gusso230/tetris/HighscoreList.java @@ -8,6 +8,7 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.NoSuchElementException; import java.util.Scanner; public class HighscoreList { @@ -21,18 +22,17 @@ public class HighscoreList { highscores.add(highscore); } - public void saveToFile(File file) { + public void saveToFile(File file) throws FileNotFoundException, SecurityException { try (PrintWriter writer = new PrintWriter(file)) { Gson gson = new Gson(); writer.println(gson.toJson(this)); - } catch (FileNotFoundException ignored) {} + } } - public void readFromFile(File file) { - try (Scanner sc = new Scanner(file)) { - Gson gson = new Gson(); - highscores = gson.fromJson(sc.nextLine(), getClass()).getHighscores(); - } catch (FileNotFoundException ignored) {} + public void readFromFile(File file) throws FileNotFoundException, NoSuchElementException { + Scanner sc = new Scanner(file); + Gson gson = new Gson(); + highscores = gson.fromJson(sc.nextLine(), getClass()).getHighscores(); } public List<Highscore> getHighscores() { |
