Highscore & das Speichern von Werten via SharedPreferences
- Home
- Tutorials
- Android
- Spiele App für Android 2.3.6 Programmieren
- Highscore & das Speichern von Werten via SharedPreferences
Mit SharedPreferences können wir Werte speichern. Diese sind so lange gespeichert, bis sie von uns überschrieben wurden, oder die App deinstalliert wurde. Und eben das benötigen wir für unseren Highscore.
Dazu brauchen wir drei Methoden in unserer GameActivity Klasse:
public int readHighscore() {
SharedPreferences pref = getSharedPreferences("GAME", 0);
return pref.getInt("HIGHSCORE", 0);
}
Hierbei erstellen wir ein Objekt vom Typen SharedPreferences an, der die SharedPreferences aus "Game" ließt, wenn dort kein wert vorhanden ist, soll 0 genommen werden. Diese Methode hat als Rückgabewert einen Integer der unserem Highscore entspricht.
public void writeHighscore(int highscore) {
SharedPreferences pref = getSharedPreferences("GAME", 0);
SharedPreferences.Editor editor = pref.edit();
editor.putInt("HIGHSCORE", highscore);
editor.commit();
}
Diese Methode erstellt einen Editor der das Objekt pref bearbeitet und dort den Integerwert Highscore einfügt. Nachdem das getan ist, muss noch editor.commit(); angefügt werden um den Wert zu übergeben.
Und noch eine Dritte:
public void compareScore() {
if (theGameView.getScore() > readHighscore()) {
writeHighscore(theGameView.getScore());
}
}
Diese Methode soll den neu errungenen Score mit dem alten Highscore vergleichen. Wenn der neue Score höher ist als der Alte, dann soll der Wert überschrieben werden.
Da wir über SharedPreferences nur unsere höchste Punktzahl speichern möchten, benötigen wir noch folgenden Code am Anfang unserer onGameOver() - Methode der GameActivity Klasse.
compareScore();
theNextIntent.putExtra("score", theGameView.getScore());
Hierbei wird zunächst die erreichte Punktzahl mit dem Rekord vergleichen und dann dem nächsten Intent eine Zusatzinformation geschickt, die ein Stringwert mit dem Namen "score" hat und den Wert des Scores der GameView Klasse speichert.
Dazu benötigen wir eine getter Methode getScore() in der GameView Klasse:
public int getScore() {
return this.score;
}
Dann legen wir noch Global in der Klasse GameActivity an:
GameView theGameView;
Und zu guter Letzt verändern unsere onCreate() - Methode unserer GameActivity sodass sie folgendermaßen aussieht:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
theGameView = new GameView(this);
setContentView(theGameView);
}
Nun fehlt uns noch, dass sowohl der neue Score als auch der Highscore in unserer GameOverActivity angezeigt werden. Darum kümmern wir uns im nächsten Tutorial.
Und wie immer, dürfen wir die Imports nicht vergessen. :)
Spiele App für Android 2.3.6 Programmieren
-
Android 2.3.6 Spiele App Programmieren
-
Lektion1.1
-
Lektion1.2
-
Lektion1.3
-
Lektion1.4
-
Lektion1.5
-
Lektion1.6
-
Lektion1.7
-
Lektion1.8
-
Lektion1.9
-
Lektion1.10
-
Lektion1.11
-
Lektion1.12
-
Lektion1.13
-
Lektion1.14
-
Lektion1.15
-
Lektion1.16
-
Lektion1.17
-
Lektion1.18
-
Lektion1.19
-
Lektion1.20
-
Lektion1.21
-
Lektion1.22
-
Lektion1.23
-
Lektion1.24
-
Lektion1.25
-
Lektion1.26
-
Lektion1.27
-
Lektion1.28
-
Lektion1.29
-
Lektion1.30
-
Lektion1.31
-
Lektion1.32
-
Lektion1.33
-
Lektion1.34
-
Lektion1.35
-
Lektion1.36
-
Lektion1.37
-
Lektion1.38
-
Lektion1.39
-