Highscoreliste mit Java erstellen

hpvw hat gesagt.:
Sicher kann ich Dir das nicht sagen, aber nach einem kurzen Überblick des Google-Suchergebnisses nach struct: Nein.

Ja, es ist etwas anderes. Deine beiden Sätze im vorherigen Post klangen so nen bissel nach struct, deswegen kam ich auf den falschen Schluss es sei sowas ähnliches.
Aber Danke für die Erklärung ^^
 
Oh man, was soll ich sagen? - Viiiieeeelen DANK!
Echt ihr seid echt die BESTEN!
Bin zwar gerade nicht am Programm dran (sitz am falschen Rechner), aber ich denke dank eurer Hilfe, dürfte ich die Highscoreliste jetz taber wirklich hinkriegen.
Für morgen versprech ich euch ein wunderbar laufendes fertiges EinMalEins-Quiz mit Highscoreliste!

Nochmal DANKE!

DANKE!
 
Hallo,
So da bin ich mal wieder ;).
Aber leider hab ich weder das Programm abgegeben, noch das Highscoreliste richtig eingebaut. Nach einer langen Woche verzweifelten veruchens eure wunderschönen Programme in mein Quiz einzubauen bis ich nun endgültig verzweifelt gescheitert ;(.
Beschämt möchte ich euch darum bitten, mir euren Quellcode nur ein wenig zu erklären um genau zu wissen was da überhaupt gemacht wird.

Nochmals Vielen Dank!
 
Code:
/*
 * Created on 10.05.2005
 *
 */

//Importieren aller benötigten Klassen

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;

/**
 * @author Hans Peter von Welt
 *  
 */
public class SortArray {

    //In Objekten dieser inneren Klasse werden die einzelnen
    //Highscore-einträge (Paare aus Spieler und Punkten) abgelegt
    private class HighscoreEintrag implements Comparable {

        //Speichert den Namen
        private String name;

        //Speichert die Punkte
        private double punkte;

        //Erzeugt einen neuen HighscoreEintrag
        public HighscoreEintrag(String name, double punkte) {
            this.name = name;
            this.punkte = punkte;
        }

        /*
         * Dies ist angesprochene Vergleichsfunktion, zu der wohl hinreichend
         * genug gesagt wurde. Ggf. konkrete Fragen (Vergleich des eigenen
         * Objekts mit dem übergebenen)
         */
        public int compareTo(Object o) {
            HighscoreEintrag hE = (HighscoreEintrag) o;
            if (this.punkte > hE.getPunkte()) {
                return 1;
            } else if (this.punkte < hE.getPunkte()) {
                return -1;
            }
            return 0;
        }

        //Es folgen drei Funktionen, um die Werte auszulesen
        public String getName() {
            return name;
        }

        public double getPunkte() {
            return punkte;
        }

        public String toString() {
            return this.name + ": " + this.punkte;
        }
    }//Ende der inneren Klasse

    //Der Konstruktor, hier geht es richtig los
    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++) {
            System.out.println(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();
        }

    }

    //Hier geht es los
    public static void main(String[] args) {
        //Es wird zum Testen ein Objekt der Klasse SortArray erstellt
        new SortArray();
    }
}
 
Zurück