summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-03-02 09:18:29 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-03-02 09:18:29 +0100
commit179d02c9d6cad1397de52418407a631472735e03 (patch)
treecd8d69cd7ad4e427ea8021d19c801562c9edd86e
parent5fb2af723fca2f7103db6dfca868206d0edfaf07 (diff)
downloadtdde30-179d02c9d6cad1397de52418407a631472735e03.tar.gz
save and read scores to file
-rw-r--r--src/se/liu/gusso230/tetris/Board.java16
-rw-r--r--src/se/liu/gusso230/tetris/Highscore.java2
-rw-r--r--src/se/liu/gusso230/tetris/HighscoreList.java22
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;
}