ich will für mein kleines Spiel ne Highscore liste erstellen, die in eine txt datei geschrieben wird. momentan bin ich so weit:
jetzt stellen sich mir noch die fragen: wie kann ich ein array in nem textarea darstellen?
und wo kann ich der highscore liste die werte übergeben? den namen soll der benutzer nach dem programm ende eingeben können und die werte (Trefferquote) sollen von hier ausgelesen werden
ich hoffe ihr könnt mir soweit folgen.
mfg moe_joe
Code:
public SortArray() {
//Ein Array mit 10 einträgen vom Type HighScoreEintrag wird erstellt
//In diesem Array werden die einzenen Paare aus Spieler und Punktestand
//gespeichert
HighscoreEintrag[] highscore = new HighscoreEintrag[10];
//Ein neue "Dateiverbindung" erstellen
File f = new File("hs.txt");
//prüfen, ob die Datei existiert
if (f.exists()) {
try {
//Wenn sie existiert werden wir sie mit dem FileReader auslesen
FileReader fR = new FileReader(f);
//FileReader liest ein array of char und keinen String
char[] c = new char[(int) f.length()];
//und in das erstellte char-array einlesen
fR.read(c);
//aus dem char-array einen string erzeugen, der dann den
//Dateinhalt enthält
String s = new String(c);
//Den String bei Zeilenumbruch teilen und die einzelnen
//Teile (=Zeilen) in ein array of string schreiben
String[] entrys = s.split("\n");
////jede Zeile der Datei abarbeiten
for (int i = 0; i < entrys.length; i++) {
//Jede einzelene Zeile bei : trennen
//dieser wurde als Trennzeichen zwischen Spieler und
//Punktestand gewählt
if (i < 10) {
String[] entry = entrys[i].split(":");
//einen neuen Highscoreeintrag mit den eingelesenen
//Erzeugen, an der entsprechenden stelle im oben
//defineirten Array
highscore[i] = new HighscoreEintrag(entry[0], Double
.parseDouble(entry[1]));
}
}
//den FileReader wieder schließen
fR.close();
} catch (FileNotFoundException e) { //falls Fehler beim
e.printStackTrace(); //Einlesen auftreten,
} catch (IOException e) { //diese ausgeben
e.printStackTrace();
}
} else {
//Wenn die Datei nicht existiert werden Beispieleinträge angelegt
highscore[0] = new HighscoreEintrag("a", 10);
highscore[1] = new HighscoreEintrag("b", 90);
highscore[2] = new HighscoreEintrag("c", 55);
highscore[3] = new HighscoreEintrag("d", 5);
highscore[4] = new HighscoreEintrag("e", 20);
highscore[5] = new HighscoreEintrag("f", 50);
highscore[6] = new HighscoreEintrag("g", 40);
highscore[7] = new HighscoreEintrag("h", 80);
highscore[8] = new HighscoreEintrag("i", 30);
highscore[9] = new HighscoreEintrag("j", 70);
}
//Das Array wird sortiert!
//Dabei wird die in dem HighscoreEintrag implementierte
//Vergleichsfunktion verwendet (ohne dass Du es merkst)
Arrays.sort(highscore);
//Ausgabe der Liste
for (int i = 0; i < highscore.length; i++) {
JDialog hsd = new JDialog();
JTextArea hs = new JTextArea();
hsd.add(hs);
hsd.setTitle(".:Hangman:. - Highscore");
hsd.setSize( 300, 450 );
hsd.setResizable(false);
hsd.setLocation (450, 0);
hsd.setVisible( true );
hs.setEditable(false);
hs.setLineWrap(true);
hs.setBackground(Color.black);
hs.setWrapStyleWord(true);
hs.setForeground(Color.white);
hs.setText(highscore[i]);
}
//Der FileWriter ist analog zum FileReader
try {
FileWriter fW = new FileWriter(f);
for (int i = 0; i < highscore.length; i++) {
if (i < highscore.length - 1) {
fW.write(highscore[i].toString() + "\n");
} else {
fW.write(highscore[i].toString());
}
}
fW.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
jetzt stellen sich mir noch die fragen: wie kann ich ein array in nem textarea darstellen?
Code:
//Ausgabe der Liste
for (int i = 0; i < highscore.length; i++) {
JDialog hsd = new JDialog();
JTextArea hs = new JTextArea();
hsd.add(hs);
hsd.setTitle(".:Hangman:. - Highscore");
hsd.setSize( 300, 450 );
hsd.setResizable(false);
hsd.setLocation (450, 0);
hsd.setVisible( true );
hs.setEditable(false);
hs.setLineWrap(true);
hs.setBackground(Color.black);
hs.setWrapStyleWord(true);
hs.setForeground(Color.white);
hs.setText(highscore[i]);
}
und wo kann ich der highscore liste die werte übergeben? den namen soll der benutzer nach dem programm ende eingeben können und die werte (Trefferquote) sollen von hier ausgelesen werden
Code:
if (underscores == 0 || mistakes >= 6) {
System.out.println(" (" + myword + ")");
System.out.println("Anzahl Versuche: " + tries
+ " davon falsch: " + mistakes);
System.out
.println("Getippte Buchstaben: " + new String(probed));
System.out.println("Anzahl versch. Buchstaben im Wort: "
+ (tries - mistakes));
System.out.println("Trefferquote: "
+ (((tries - mistakes) * 100) / tries) + "%");
}
ich hoffe ihr könnt mir soweit folgen.
mfg moe_joe