C
coolz3ro
Neues Mitglied
- 0
Hallo!
Ich bin gerade dabei einen Highscore für mein Spiel zu entwickeln. Orientiert habe ich mich dabei an einem Tutorial aus dem Internet, in dem eine Klasse "Highscores" programmiert wurde (siehe unten).
Soweit ich den Quellcode richtig interpretiert habe, wird mit
ein neues Objekt der Klasse erzeugt. Dieses ist praktisch schon eine komplette Highscore-Liste, die zehn Einträge aufnehmen kann (10 Namen und 10 Punktestände) und nach den Punkteständen sortiert.
Meine Fragen nun:
Ich möchte in einer Activity aus einem Dialog heraus bei Betätigung eines Buttons den Punktestand (int anzahlrichtigerantworten) und den Namen der Person (aus einem EditText heraus gelesen) in einer Highscore-Liste speichern.
Dafür habe ich in der Activity erstmal ein neues Objekt der Klasse Highscores erzeugt mit
In dieses Objekt kann ich Name und Punktestand nun mithilfe von Folgendem speichern:
FRAGE 1: Wenn ich das tatsächlich so mache: Wird dann nicht jedes Mal, wenn ich ein Spiel beendet habe und den Punktestand speichern will ein neues Objekt highscore erzeugt, das das alte Objekt einfach "überschreibt"? (Weil ich ja "Highscores highscore = new Highscores(this);"immer wieder aufrufe, wenn das Spiel zu ende ist.) Oder wird das alte Objekt dann einfach nur erweitert um den neuen Eintrag und die alten Einträge bleiben auch erhalten?
FRAGE 2: Ich möchte nun natürlich auch die Highscoreliste anzeigen lassen. Dies soll aber in einer anderen Activity passieren. Also nicht in jener Activity, in der ich das Objekt highscore erzeugt habe und die Werte übergeben habe. Wie kann ich das praktisch umsetzen? Ich muss dieses Objekt ja praktisch in der anderen Activity verfügbar machen.
Ich hoffe auf viele Antworten. Vielen Dank!
Ich bin gerade dabei einen Highscore für mein Spiel zu entwickeln. Orientiert habe ich mich dabei an einem Tutorial aus dem Internet, in dem eine Klasse "Highscores" programmiert wurde (siehe unten).
Code:
import android.content.Context;
import android.content.SharedPreferences;
public class Highscores {
private SharedPreferences preferences;
private String names[];
private long score[];
public Highscores(Context context)
{
preferences = context.getSharedPreferences("Highscore", 0);
names = new String[10];
score = new long[10];
for (int x=0; x<10; x++)
{
names[x] = preferences.getString("name"+x, "-");
score[x] = preferences.getLong("score"+x, 0);
}
}
public String getName(int x)
{
//get the name of the x-th position in the Highscore-List
return names[x];
}
public long getScore(int x)
{
//get the score of the x-th position in the Highscore-List
return score[x];
}
public boolean inHighscore(long score)
{
//test, if the score is in the Highscore-List
int position;
for (position=0; position<10&&this.score[position]>score;
position++);
if (position==10) return false;
return true;
}
public boolean addScore(String name, long score)
{
//add the score with the name to the Highscore-List
int position;
for (position=0; position<10&&this.score[position]>score;
position++);
if (position==10) return false;
for (int x=9; x>position; x--)
{
names[x]=names[x-1];
this.score[x]=this.score[x-1];
}
this.names[position] = new String(name);
this.score[position] = score;
SharedPreferences.Editor editor = preferences.edit();
for (int x=0; x<10; x++)
{
editor.putString("name"+x, this.names[x]);
editor.putLong("score"+x, this.score[x]);
}
editor.commit();
return true;
}
}
Code:
Highscores highscore = new Highscores(this);
Meine Fragen nun:
Ich möchte in einer Activity aus einem Dialog heraus bei Betätigung eines Buttons den Punktestand (int anzahlrichtigerantworten) und den Namen der Person (aus einem EditText heraus gelesen) in einer Highscore-Liste speichern.
Dafür habe ich in der Activity erstmal ein neues Objekt der Klasse Highscores erzeugt mit
Code:
Highscores highscore = new Highscores(this);
Code:
EditText editText1 = (EditText) dialog.findViewById (R.id.editText1);
String name = editText1.getText().toString();
highscore.addScore(name, anzahlrichtigerantworten);
FRAGE 2: Ich möchte nun natürlich auch die Highscoreliste anzeigen lassen. Dies soll aber in einer anderen Activity passieren. Also nicht in jener Activity, in der ich das Objekt highscore erzeugt habe und die Werte übergeben habe. Wie kann ich das praktisch umsetzen? Ich muss dieses Objekt ja praktisch in der anderen Activity verfügbar machen.
Ich hoffe auf viele Antworten. Vielen Dank!