Zadek
Grünschnabel
Hey,
ich studiere Multimedia und Kommunikation in Ansbach und fertige gerade im ersten Semester Java Programmierung ein Spiel als Studienarbeit an. Am nächsten Montag, den 29.06.2009 ist Abgabe und ich komme auch mit googlen einfach nicht weiter.
Mein Spiel liefert zwei Namen und zwei Scores zurück, die mit getter geholt werden. Meinem Spiel fehlt noch der Highscore. Es gibt bereit einen Thread bei tutorials.de, der sich damit befasst, aber er ist schon alt und geschlossen:
http://www.tutorials.de/forum/java/290931-highscore-liste-erstellen.html#post1501482
Den Code aus dem ersten Posting des Threads habe ich modifiziert und eingebaut, allerdings wird bezug auf eine Klasse "HighscoreEintrag" genommen (bei mir heißt sie AddHighscore), von der ich nicht weiß, was darin stehen muss.
Ich bekam eine FileNotFoundException, da die Datei gar nich angelegt wurde, dann eine ArrayIndexOutOfBoundsExeption beim Wert 1 in der Zeile, in der ich mit einer if-Schleife Werte aus der Datei in das AddHighscore-Array einlese.
Mein komplettes Spiel habe ich euch mal in den Anhang gepackt. Es hat noch ein paar andere Macken, aber es funktioniert immerhin schon.
Hier der Code, der den Highscore betrifft:
Es muss also irgendwo ein Fehler versteckt sein, oder aber ich hab einfach die AddHighscore falsch geschrieben. Weiß jemand wie ich das hinbekomme?
Ich wäre euch echt dankbar, wenn ihr mir helfen könntet. Eure Seite hat mir schon oft geholfen, diesmal aber muss ich mich direkt an euch wenden.
MeinProf kann mir aus zeitmangel nicht weiterhelfen, und da ich im ersten Semester Java bin, brauche ich sowieso noch Stunden, um die ganzen APIs durchzusehen und selbst weiterzukommen...
ich studiere Multimedia und Kommunikation in Ansbach und fertige gerade im ersten Semester Java Programmierung ein Spiel als Studienarbeit an. Am nächsten Montag, den 29.06.2009 ist Abgabe und ich komme auch mit googlen einfach nicht weiter.
Mein Spiel liefert zwei Namen und zwei Scores zurück, die mit getter geholt werden. Meinem Spiel fehlt noch der Highscore. Es gibt bereit einen Thread bei tutorials.de, der sich damit befasst, aber er ist schon alt und geschlossen:
http://www.tutorials.de/forum/java/290931-highscore-liste-erstellen.html#post1501482
Den Code aus dem ersten Posting des Threads habe ich modifiziert und eingebaut, allerdings wird bezug auf eine Klasse "HighscoreEintrag" genommen (bei mir heißt sie AddHighscore), von der ich nicht weiß, was darin stehen muss.
Ich bekam eine FileNotFoundException, da die Datei gar nich angelegt wurde, dann eine ArrayIndexOutOfBoundsExeption beim Wert 1 in der Zeile, in der ich mit einer if-Schleife Werte aus der Datei in das AddHighscore-Array einlese.
Mein komplettes Spiel habe ich euch mal in den Anhang gepackt. Es hat noch ein paar andere Macken, aber es funktioniert immerhin schon.
Hier der Code, der den Highscore betrifft:
Code:
public class Highscore extends javax.swing.JFrame {
// Deklaration der Variablen
private Game game;
AddHighscore[] highscore = new AddHighscore[10];
File highScoreFile = new File("highscore.txt");
FileReader highScoreFileReader = new FileReader(highScoreFile);
String winner1 = Properties.getSpieler1Name();
String winner2 = Properties.getSpieler2Name();
int score1 = Game.getScore1();
int score2 = Game.getScore2();
/** Creates new form Page7_Highscore */
public Highscore() throws IOException {
initComponents();
setFocusable(true);
setSize(540, 600);
if (highScoreFile.exists()) {
try {
char[] charArray = new char[(int) highScoreFile.length()];
highScoreFileReader.read(charArray);
String dateiInhalt = new String(charArray);
String[] eintraegeZeilen = dateiInhalt.split("\n");
for (int i = 0; i < eintraegeZeilen.length; i++) {
//Jede einzelene Zeile bei : trennen
//dieser wurde als Trennzeichen zwischen Spieler und
//Punktestand gewählt
if (i < 10) {
String[] eintrag = eintraegeZeilen[i].split(":");
//einen neuen Highscoreeintrag mit den eingelesenen
//Erzeugen, an der entsprechenden stelle im oben
//defineirten Array
highscore[i] = new AddHighscore(eintrag[0]/*Name*/, Double.parseDouble(eintrag[1]/*Score*/));
}
}
//den highScoreFileReader wieder schließen
highScoreFileReader.close();
} catch (FileNotFoundException e) { //falls Fehler beim
e.printStackTrace(); //Einlesen auftreten,
} catch (IOException e) { //diese ausgeben
e.printStackTrace();
}
} else {
//highScoreFile = new File("highscore.txt");
//Wenn die Datei nicht existiert werden Beispieleinträge angelegt
highscore[0] = new AddHighscore("Julian", 100);
highscore[1] = new AddHighscore("Matze", 400);
highscore[2] = new AddHighscore("Miki", 550);
highscore[3] = new AddHighscore("Tricha", 50);
highscore[4] = new AddHighscore("Phipsy", 200);
highscore[5] = new AddHighscore("Nino", 500);
highscore[6] = new AddHighscore("Batman", 400);
highscore[7] = new AddHighscore("Spiderschwein", 600);
highscore[8] = new AddHighscore("Urmel", 300);
highscore[9] = new AddHighscore("Rod", 400);
//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++) {
//Highscore auf GUI ausgeben
System.out.println(highscore[i]);
//Test
jTextArea1.append(highscore[i].toString());
}
//Der FileWriter ist analog zum FileReader
try {
FileWriter highScoreFileWriter = new FileWriter(highScoreFile);
for (int i = 0; i < highscore.length; i++) {
if (i < highscore.length - 1) {
highScoreFileWriter.write(highscore[i].toString() + "\n");
} else {
highScoreFileWriter.write(highscore[i].toString());
}
}
highScoreFileWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Code:
public class AddHighscore {
private static String name;
private static double score;
public AddHighscore(String nameadd, double scoreadd) {
name = nameadd;
score = scoreadd;
System.out.println(name + ": " + score);
}
public static String getHighscoreName() {
return name;
}
public static double getHighscoreScore() {
return score;
}
}
Es muss also irgendwo ein Fehler versteckt sein, oder aber ich hab einfach die AddHighscore falsch geschrieben. Weiß jemand wie ich das hinbekomme?
Ich wäre euch echt dankbar, wenn ihr mir helfen könntet. Eure Seite hat mir schon oft geholfen, diesmal aber muss ich mich direkt an euch wenden.
MeinProf kann mir aus zeitmangel nicht weiterhelfen, und da ich im ersten Semester Java bin, brauche ich sowieso noch Stunden, um die ganzen APIs durchzusehen und selbst weiterzukommen...
Anhänge
Zuletzt bearbeitet: