highscore arry

Ghorki

Aktives Mitglied
Hey Leute,

ich möchte gerne eine Highscoreliste erstellen.
Und zwar wie folgt aufgebaut, es gibt 4 Schwirigkeitsstufen, für jede soll es eine eigene Liste geben.
Die Textdatei sieht bei nun wie folgt aus:

3#1.*2.*3.*4.*5.*6.*7.*8.*9.*10.*
4#1.*2.*3.*4.*5.*6.*7.*8.*9.*10.*
5#1.*2.*3.*4.*5.*6.*7.*8.*9.*10.*
6#1.*2.*3.*4.*5.*6.*7.*8.*9.*10.*

Die Zahl vor der Raute gibt die Schwirigkeitsstufe an
Zahl. gibt die Platzierung an
* Trennzeichen von Punktzahl und Spielername


Wenn der Spieler nun Stufe 1 gewäht hat, liest mein Programm die erste Zeile so ein:
1.*2.*3.*4.*5.*6.*7.*8.*9.*10.*

wie kann ich nun für jede Platzierung eine Punktzahlarray und Namearray erstellen?
 

njans

Top Contributor
Du kannst das doch so speichern, wie du willst. Das selbe machst du doch schon mit dem Schwierigkeitsgrad und der Patzierung.
Was hindert dich einfach [name:punkte|name2:punkte|...] einzubauen?
 

HimBromBeere

Top Contributor
Also ich würde an deiner Stelle die Textdatei so aufbauen:
<Schwierigkeit1>
Name: Punkte
Name: Punkte
...

<Schwierigkeit2>
Name: Punkte
...

oder wie njans schon sagte:
schwierigkeit1;name:punkte;name:punkte...
schwierigkeit2;name:punkte;name:punkte...

Du musst schon eine konkrete Frage stellen, wo z.B. in deinem Programm etwas nicht funktioniert, weil es eine Fehlermeldung gibt o.ä.

[EDIT]
Wenn du alles in einer Zeile hast, brauchst du nur die gesamte Zeile einlesen und dann beim Komma/Semikolon/... zu trennen. Das erste Element ist dann der Schwierigkeitsgrad, die anderen Elemente gehen ins "Namensarray" bzw, ins Punktearray.
Alternativ kannst auch eine HashMap nehmen, mit Namen als Schlüssel und Punkten als Werten, dürfte einfacher zu verwalten sein als zwei Arrays.
[/EDIT]
 
Zuletzt bearbeitet:

Ghorki

Aktives Mitglied
Okay das sieht schonnmal besser aus, aber mein Problem ist, ich weiß nicht wie ich die Textdatei richtig einlesen kann, um die Daten dann dort zu speichern..
 

njans

Top Contributor
Generell muss ich meinem Vorredner in dem Punkt Recht geben, dass deine Ordnung deiner CSV Datei etwas umständlich ist.
schwierigkeit2;name:punkte;name:punkte...
Das ist beispielsweise eine deutlich einfachere Ordnung, da du mittels split() eine ganze Menge machen kannst, ohne dabei nach X verschiedenen Zeichen zu splitten.

[EDIT]
Java:
BufferedReader reader = new BufferedReader(new FileReader(new File(DeinPfadHier)));

List<String> everyLineList = new ArrayList<String>();

String currentLine = "";
while ((currentLine = reader.readLine()) != null)
{
  everyLineList .add(currentLine);
}

 // Am Ende hast du dann alle Zeilen in der everyLineList

[/EDIT]
 
Zuletzt bearbeitet:

Ghorki

Aktives Mitglied
Ich habs jetzt fürs erste erstmal n bisschen unsauberer gemacht, weil ich bis Donnerstag fertig werden muss.
Ich habe nun noch folgendes Problem, meine txt Datei wird nicht überschrieben, sondern das Programm hängt den Text einfach unten dran.

Wie lässt sich das ändern?

Java:
try
			{
				File file = new File("d:\\dtheobal\\Desktop\\score3punkte.log");
				FileWriter fw = null;
	
					fw = new FileWriter( file.getPath() , true );
					
					PrintWriter pw = new PrintWriter( fw );
					
					for (int i = 0; i < highscore3.length; i++) {
						pw.println(highscore3[i]);
					}	
					
					fw.flush();
					fw.close();
					
					pw.flush();
					pw.close();
				}
			catch( IOException e )
			{
				e.printStackTrace();
			}
 

Ikaron

Bekanntes Mitglied
[c]fw = new FileWriter( file.getPath() , true ); // Das true steht für "append", wenn du das nun auf false stellst wird die Datei überschrieben.[/c]
Desweiteren könntest du das umschreiben:
Java:
try {
    File file = new File("d:\\dtheobal\\Desktop\\score3punkte.log");
    PrintWriter pw = new PrintWriter( new FileOutputStream(file) );
                    
    for (String s : highscore3) // String ersetzen mit dem Datentyp von "highscore3"
        pw.println(s);

    pw.close();
} catch( Exception e ) {
    e.printStackTrace();
}

Ist dann ein wenig kürzer^^
 
Zuletzt bearbeitet:

Crian

Top Contributor
So oder so achte darauf, dass sich niemand einen Namen gibt, der deine Trennzeichen beinhaltet. Sonst hast du beim Spieler
Code:
ha|ha;ha:ha
u.U. hinterher Probleme, deine Datei wieder zu lesen.
 

Ähnliche Java Themen

Neue Themen


Oben