HighScore für mein Spiel

zioProduct

Erfahrenes Mitglied
Huhu :confused:
Ich hab so ein kleines BombenDefuse spiel gemacht, bei dem man einen Nick eingeben kann, und es wird gezählt wie viele Bomben man defusen konnte, und wie viele male man gestorben ist :suspekt:

Auf jedenfall habe ich zwei Buttons. Einen für save Highscore und der andere für show Score.

Die Score speichere ich in eine vorgegebene Txt. Angezeigt wird in einer Listbox.
Nun zu meinem Problem, ich kann die Score speichern, doch ist die Score wieder weg, wenn ich Programm neu lade. Wenn ich während dem laufenden Programm Scores dazufüge, löscht er mir alle alten Scores bis auf die neusten 2 und fügt dann noch meine neue Score dazu. Wenn ich den nick ändere zeigt er mir die vorgänger score doppelt an und die neue dazu...

Ich bin ganz schön verwirrt :(

So hoffe um Hilfe :confused:

mfg ziop
**Edit**
Huch Code vergessen :)

Code:
private void button2_Click(object sender, System.EventArgs e)
		{

			if(textBox3.Text=="unknown")
				MessageBox.Show("Bitte wählen Sie einen eigenen Benutzernamen");
			else
			{
				string output ="";
				StreamReader reader = File.OpenText(datName);
				while((output = reader.ReadLine()) != null)
				{
					read= output + Environment.NewLine;
				}
				reader.Close();

				string s = "Nick: " + textBox3.Text + " Defused: "+ textBox1.Text + " Dead: " +textBox2.Text + Environment.NewLine;

				StreamWriter writer = File.CreateText(datName);
				writer.Write(read +s);
				writer.Close();
				textBox2.Text ="0";
				textBox1.Text="0";

				MessageBox.Show("Ihre Highscore wurde erfolgreich hinzugefügt","Score");
			}
		}

		private void button3_Click(object sender, System.EventArgs e)
		{
			string output="";
			
			listBox1.Visible=true;

			StreamReader liRead = File.OpenText(datName);
			while((output = liRead.ReadLine())!= null)
			{
				listBox1.Items.Add(output);
			}
			liRead.Close();
		}
:suspekt:
 

Norbert Eder

Erfahrenes Mitglied
Du kannst ein File im Append-Modus öffnen, dann wird der Zeiger an die letzte Stelle in deinem File gestellt. Und somit überschreibst du dann auch nichts.

An deiner Stelle hätte ich dazu aber ein XML-File genommen, aber das ist wohl eher Philosophie :)
 

zioProduct

Erfahrenes Mitglied
Hmmm, irgend wie geht das nicht, ausser ich habe die Append-Methode falsch angewand, was sehr gut sein kann :)

Code:
string s = "Nick: " + textBox3.Text + " Defused: "+ textBox1.Text + " Dead: " +textBox2.Text + Environment.NewLine;
				StringBuilder sb = new StringBuilder();
				sb = sb.Append(read);
				StreamWriter writer = File.CreateText(datName);
				writer.Write(read +s);
				writer.Close();
				textBox2.Text ="0";
				textBox1.Text="0";

zur veranschaulichung, der doppelte eintrag, den er macht
 

Anhänge

  • problemdb.JPG
    problemdb.JPG
    22,2 KB · Aufrufe: 81

Norbert Eder

Erfahrenes Mitglied
Code:
treamWriter writer = File.CreateText(datName);
Das CreateText ist dein Problem, weil dadurch das File jedes Mal neu angelegt wird.
 

zioProduct

Erfahrenes Mitglied
Hmm, und was mach ich da dagegen? File.appendtext(datName); geht auch nicht :(
Ich bin wohl am ** :eek: Auser ich bekomm nen feinen Tipp :suspekt:
Und bitte nicht :google: da such ich schon genug drin rum wie ich das beheben, mit nem FileDialog wärs so einfach aber das passt nicht für ne Highscore :)

mfg ziop
 

zioProduct

Erfahrenes Mitglied
Naja, das mit dem Speichern geht jetzt, durch das AppendText. Hab ich aus der :google: :) Das Problem macht das anzeigen... Irgend wie hab ich gerade nen Blackout, um die Listbox richtig zu füllen -.-* Der füllt immer das was ich schon drinn hatte
Huch gerade bei diesem Satz schreiben kommt mir in den Sinn, das ich die Listbox vergessen habe zu clearen :-(
Haha, gleich testen. Man bin ich dumm -.-*
Trotzdem Danke Norbert :)
mfg ziop