Rangliste erstellen

Status
Nicht offen für weitere Antworten.

moe_joe

Aktives Mitglied
ich will für mein kleines Spiel ne Highscore liste erstellen, die in eine txt datei geschrieben wird. momentan bin ich so weit:
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
 

madboy

Top Contributor
moe_joe hat gesagt.:
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]);
	        }
du erstellst ja jedes Mal einen neuen Dialog und ne neue TextArea. Das wird wohl nicht das sein was du willst.
Versuchs mal so:
Code:
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);
hs.setEditable(false);
hs.setLineWrap(true);
hs.setBackground(Color.black);
hs.setWrapStyleWord(true);
hs.setForeground(Color.white);
 //Ausgabe der Liste
for (int i = 0; i < highscore.length; i++) {
			hs.append(highscore[i] + "\n");
}
hsd.setVisible( true );

moe_joe hat gesagt.:
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) + "%");
			}
Sorry, da verstehe ich nicht, was du meinst. Willst du das auch in der JTextArea darstellen?
 

moe_joe

Aktives Mitglied
ich hatte das so gedacht, da sich nen Jdialog erstelle, der das JTextArea darstellt. dort sollen die daten der highscore liste ausgegeben werden. die daten FÜR die highscore liste sollen sich aus
Code:
System.out.println("Trefferquote: "
+ (((tries - mistakes) * 100) / tries) + "%");

beziehen. es soll als wert die treffquote genommen werden. der name für die highscore liste soll dann seperat vom benutzer eingeben werden.
 

madboy

Top Contributor
Das Prinzip ist eigentlcih nicht weiter kompliziert:
Code:
String trefferquote = "Trefferquote: " 
+ (((tries - mistakes) * 100) / tries) + "%";
JTextArea hs = new JTextArea();
hs.append(trefferquote + "\n");
Wie genau du das dann implementierst/haben willst verstehe ich immer noch nicht ganz. Poste doch mal, wie das aussehen soll in der JTextArea. Beispiel:

Code:
Name:     Treffer:
blablubb:  10%
blubbbla:  20%

Für die Eingabe nimmst wohl am besten ein JTextField:
Code:
JTextField tf = new JTextField();
//evtl. noch einen ActionListener ans JTextField mit tf.addActionListener(...);
//dialog.add(tf) usw.
//...
String eingabe = tf.getText();
hs.append(eingabe);
//...
 

moe_joe

Aktives Mitglied
es soll aussehen wie dein bsp. Das Spiel ist zu ende, dann soll der benutzer seinen namen eingeben können, auf button klicken "Highscore" und dann soll der eingebene namen mit der trefferquote zusammen in die highscore liste geschreiben werden.

Name : Trefferquote : (vielleicht noch datum wenns nich zu kompliziert ist)
 

moe_joe

Aktives Mitglied
hab jetzt Highscore als eigene methode geschrieben und versuche jetzt das beim gewinnen des SPiels die methode aufgerufen wird, nen neues JDialog erscheint in dem der benutzer unten seinen namen eingeben kann der dann zusammen mit der trefferquote im JDialog in die Highscore geschrieben wird.

Code:
public void Highscore() {
		
    	JDialog hsd = new JDialog(); 	
    	JTextField tf = new JTextField();
		JButton hsbutton = new JButton("Hinzufügen");
		hsd.add(hsbutton);
		hsd.add(tf);
		hsd.setTitle(".:Hangman:. - Highscore");
		hsd.setSize( 300, 450 ); 
		hsd.setResizable(false);
		hsd.setLocation (450, 0);
		hsbutton.setLocation (450, 0);
		tf.setLocation (450, 0);
		hsd.setVisible(true);
		tf.setVisible(true);
		ActionListener hsb = new ActionListener() {
		      public void actionPerformed( ActionEvent e ) {
		        System.exit( 0 );
		      }
		 };

		hsbutton.addActionListener(hsb);
		
	}

das meine methode Highscore

Code:
case -1:
			g.drawImage(tk.getImage("images/hm.gif"), SX, SY, this);
			g.setColor(Color.green);
			g.drawString(">>> GEWONNEN <<<", WND_B / 2 - 70, WND_H / 2 + 10);
			Highscore();
			removeKeyListener(control);
			break;

wenn das Spiel gewonnen ist soll die methode aufgerufen werden

Code:
	    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;
	        }

	        //Vergleichsfunktio
	        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() { 
	        	String eingabe = tf.getText(); 
	            return name;
	        }

	        public double getPunkte() {
	        	String trefferquote = "Trefferquote: "
	        	+ (((tries - mistakes) * 100) / tries) + "%";
	        	hs.append(trefferquote + "\n"); 
	            return punkte;
	        }

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

Mein Problem ist momentan das der JDialog 2 mal angezeigt wird. eigentlich soll der JDialog nur 1. mal erscheinen und die highscore.txt datei anzeigen. Im unteren Teil des Dialogs sollen JTextfield zum eingebn des namens für die highscore und nen button zum abschicken sein.das ganze klappt aber nicht wirklich, warum?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Rangliste erstellen Java Basics - Anfänger-Themen 6
XWing Int erstellen lassen? Java Basics - Anfänger-Themen 11
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
A Passwort erstellen Java Basics - Anfänger-Themen 3
S CVS erstellen Java Basics - Anfänger-Themen 1
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
dcHost Java Kara Sensor erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S Programm erstellen Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
T Countdown erstellen Java Basics - Anfänger-Themen 7
I ZIP File erstellen Java Basics - Anfänger-Themen 10
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
E Classpath Datai erstellen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L FinanzApp erstellen Java Basics - Anfänger-Themen 1
J Junit4 Klasse erstellen Java Basics - Anfänger-Themen 5
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
JaVaN0oB Bruchklasse erstellen Java Basics - Anfänger-Themen 9
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
K Rahmen erstellen mit mehrdimensionalem Array Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
K Objektdiagramm erstellen Java Basics - Anfänger-Themen 3
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
E Filmsammlung erstellen Java Basics - Anfänger-Themen 6
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
N String N-Gramme mit Stream erstellen Java Basics - Anfänger-Themen 7
K Quersumme erstellen Java Basics - Anfänger-Themen 7
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
D Zusammenhängenden Graphen für Gleisnetz erstellen Java Basics - Anfänger-Themen 13
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben