Entwickler-Ecke

Sonstiges (.NET) - C# Rangliste


Xclusive - So 12.12.10 19:54
Titel: C# Rangliste
Ich will für mein Spiel "Schiffeversenken" eine Rangliste einbauen.

Wie soll ich das ganze speichern? (Will es erstmals nur lokal machen)
Mit einer XML-Datei?
Und in was soll ich das ganze dann Anzeigen? (Gibts da eine Tabelle?)

Sollte 3 Spalten haben: Rang Name Wertung

Mit freundlichen Grüßen


huuuuuh - So 12.12.10 23:13

Hi,

zum lokalen speichern in einer XML schau dir mal da Thema XML-(De)Serialisierung an. http://www.c-sharp-library.de/topic_Mit+XmlSerializer+Objekte+als+XML+speichern+und+laden_64947.html
und für die Tabelle: es gibt eine Komponente namens GridView (oder so ähnlich)


Yogu - So 12.12.10 23:22

Wahrscheinlich kommt wieder gleich jemand mit Datenquellen und LINQ und so, aber ich wage es trotzdem mal, eine ganz einfache Implementierung für die Anzeige vorzuschlagen: Erstelle ein ListView, wähle Details als Anzeigemodus aus und erstelle die drei Spalten. Beim Laden der Highscore gehst du alle Daten (die du in einer List<HighScoreItem> gespeichert hast) durch und fügst der Reihe nach die Einträge in die ListView ein:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
listView.BeginUpdate();
try {
  for (int i = 0; i < highScore.Count; i++) {
    HighScoreItem item = highScore[i];
    listView.Items.Add(new ListViewItem(new String[] { i.ToString(), item.Name, item.Score });
  }
finally {
  listView.EndUpdate();
}

Das listView.BeginUpdate sorgt dafür, dass der Einfügeprozess schneller und flüssig abläuft.


Xclusive - Mo 13.12.10 19:03

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Wahrscheinlich kommt wieder gleich jemand mit Datenquellen und LINQ und so, aber ich wage es trotzdem mal, eine ganz einfache Implementierung für die Anzeige vorzuschlagen: Erstelle ein ListView, wähle Details als Anzeigemodus aus und erstelle die drei Spalten. Beim Laden der Highscore gehst du alle Daten (die du in einer List<HighScoreItem> gespeichert hast) durch und fügst der Reihe nach die Einträge in die ListView ein:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
listView.BeginUpdate();
try {
  for (int i = 0; i < highScore.Count; i++) {
    HighScoreItem item = highScore[i];
    listView.Items.Add(new ListViewItem(new String[] { i.ToString(), item.Name, item.Score });
  }
finally {
  listView.EndUpdate();
}

Das listView.BeginUpdate sorgt dafür, dass der Einfügeprozess schneller und flüssig abläuft.


Vielen Dank!
Sowas hab ich für den Anfang gesucht.
Später kann man das ganze erweitern, mit einer globalen Rangliste usw.
Aber für den Anfang ist das perfekt.... : )


Noch eine Frage: Werden die Daten beim beenden gelöscht oder bleiben die da?


MfG


Yogu - Mo 13.12.10 19:15

Die Daten sind ja in Objekte gespeichert, die im Arbeitsspeicher abgelegt werden. Natürlich werden die bei Programmende freigegeben.

Wie man sie dauerhaft speichert hat user profile iconhuuuuuh ja schon gepostet.