diff options
| -rw-r--r-- | src/se/liu/gusso230/tetris/Board.java | 16 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/Highscore.java | 2 | ||||
| -rw-r--r-- | src/se/liu/gusso230/tetris/HighscoreList.java | 22 |
3 files changed, 35 insertions, 5 deletions
diff --git a/src/se/liu/gusso230/tetris/Board.java b/src/se/liu/gusso230/tetris/Board.java index aa3a424..bb84d2a 100644 --- a/src/se/liu/gusso230/tetris/Board.java +++ b/src/se/liu/gusso230/tetris/Board.java @@ -1,6 +1,9 @@ package se.liu.gusso230.tetris; +import com.google.gson.Gson; + import javax.swing.*; +import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -24,6 +27,7 @@ public class Board { private int points = 0; private HighscoreList highscores; + private File highscoreFile; private List<BoardListener> boardListeners; @@ -41,9 +45,11 @@ public class Board { boardListeners = new ArrayList<>(); tetrominoMaker = new TetrominoMaker(); this.highscores = highscores; - highscores.addHighscore(new Highscore("a", 100)); - highscores.addHighscore(new Highscore("c", 300)); - highscores.addHighscore(new Highscore("b", 200)); + highscoreFile = new File("highscores.json"); + highscores.readFromFile(highscoreFile); + // highscores.addHighscore(new Highscore("a", 100)); + // highscores.addHighscore(new Highscore("c", 300)); + // highscores.addHighscore(new Highscore("b", 200)); } public void tick() { @@ -60,8 +66,10 @@ public class Board { private void gameOver() { state = GameState.GAME_OVER; - highscores.addHighscore(new Highscore(JOptionPane.showInputDialog("Your name: "), points)); + //highscores.addHighscore(new Highscore(JOptionPane.showInputDialog("Your name: "), points)); + highscores.addHighscore(new Highscore("woo", points)); highscores.sort(new HighscoreComparator()); + highscores.saveToFile(highscoreFile); state = GameState.SHOWING_HIGHSCORES; } diff --git a/src/se/liu/gusso230/tetris/Highscore.java b/src/se/liu/gusso230/tetris/Highscore.java index d72c9c5..83d697b 100644 --- a/src/se/liu/gusso230/tetris/Highscore.java +++ b/src/se/liu/gusso230/tetris/Highscore.java @@ -4,6 +4,8 @@ public class Highscore { String name; int points; + public Highscore() {} + public Highscore(final String name, final int points) { this.name = name; this.points = points; diff --git a/src/se/liu/gusso230/tetris/HighscoreList.java b/src/se/liu/gusso230/tetris/HighscoreList.java index 6bd656c..0a99db0 100644 --- a/src/se/liu/gusso230/tetris/HighscoreList.java +++ b/src/se/liu/gusso230/tetris/HighscoreList.java @@ -1,11 +1,17 @@ package se.liu.gusso230.tetris; +import com.google.gson.Gson; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Scanner; public class HighscoreList { - List<Highscore> highscores; + private List<Highscore> highscores; public HighscoreList() { highscores = new ArrayList<>(); @@ -15,6 +21,20 @@ public class HighscoreList { highscores.add(highscore); } + public void saveToFile(File file) { + 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 List<Highscore> getHighscores() { return highscores; } |
