Highscoreliste für ein Vokabeltrainer (brauche hilfe)

aro69

Mitglied
Hallo ersteinmal alle zusammen

Ich versuche mein Informatiktechniker in Abendform zu machen und brauche eure Hilfe. Bislang habe ich mich fürs Programmieren nicht interessiert (umsomehr für Netzwerktechnik) bin also Laie. Jetzt haben wir ein Fach bekommen das OPRO (Objekt Orientierte Prog.) heisst und ich habe grosse schwierigkeiten, diese Prog.Sprache (Java) zu verstehen. Es ist nicht so, dass ich es überhaupt nicht kann, jedoch ein Anfänger bin.
Also der Lehrer möchte das wir ein Vokabeltrainer (Deutsch-Englisch / Englisch-Deutsch) programmieren. Die Englisch bzw. Deutsche Vokabeln sollen aus einer Textdatei ausgelesen werden. Fals eine Vokabel in dieser Sitzung 3 mal infolge richtig beantwortet wird, soll sie nicht mehr abgefragt werden. Bein verlassen des Trainers soll eine Highscoreliste angezeigt werden, welches den "Platz, Name, Punkte, Wieviele Vokabeln, Richtige Vokabeln, Falsche Vokabeln" anzeigt.
Dies soll alles auf dem DOS Fenster geschehen.
Das Prog. habe ich soweit fertig programmiert (mit Hilfe eines Dicken Java Buches) bis zu Highscoreliste. Ich habe keinen blassen schimmer wie ich die programmieren soll?
Ich würde gerne die Hi-liste in eine Methode einpacken, da ich nicht weiss wie man zwei Classen miteinander verbindet.
Kann mir da Irgend jemand behilflich sein
Habe hier im Forum auch einige Hi-listen gefunden, jedoch nützen sie mir nicht viel, weil erstens ich nicht weiss was da passiert und zum zweiten diese nur 2-3 eintäge haben (Platz, Name, Punkte).
Würde mich freuen wenn mir jemand behilflich sein kann.
DANKE
 
Hallo,

der schwierigste Teil deiner Aufgabe wird sein, die notwendigen Daten während das Programm läuft zu sammeln und in eine Datei schreiben. Den Rest erledigt dann System.out.println(); . Also erstmal eine Methode implementieren die Namen, Datum, Anzahl richtige Antworten etc. in eine Datei speichert.


Vg Erdal
 
Hallo,
also ich denke mal das das mit ner ganznormalen int Zahl und einer if Verzweigung
gehen sollte z.B. so:
Code:
boolean voc=false; //Ein boolscher Wert der angibt ob die Vokabel gestellt wird
if (!voc) vocStellen();//wenn voc ==false ist wird die Vokabel gestellt    
if(i>3) voc = true // Die Meth. vocStellen rechnet i hoch wenn richtig. Wenn i>3 wird voc auf true gestellt somit ist die Abfrage Bedingung(!voc) nicht mehr erfüllt
MFG bigboombang
 
Also mit dem 3 fach abfrage habe ich soweit erledigt.
Die ganzen Werte z.B "wieviele Vokabeln, davon richtige, dovon falsche, Punkte usw. die daten gehen mir in der Sitzung auch nicht verloren sprich die ganzen daten werden auch gesammelt. Jedoch weiss ich nicht wie ich sie in eine Highscoreliste einbauen soll. Besser gesagt ich weiss noch nicht einmal wie ich die Highscoreliste prog. soll
Ich habe eine Methode erstellt, wo ich ohne probleme die Daten für die Hi-liste anzeigen kann (sprich von dem aktuellen spieler) alo kann ich die daten auch in die methode weiter geben um sie in einer Hi-liste einzubauen. Aber wie baue ich sie ein wie prog. ich eine Hi-liste das weiss ich nicht da liegt mein problem.
 
Auf der Doskonsole hast du ja garnicht so viele Möglichkeiten. Du gibts einfach in einer bestimmten Reihenfolge in einer Zeile die Werte zu einer Person aus.

System.out.println("Platz: " + platz + "Gewusste Wörter: " + anzahl + "Name: " + name";

Danach kommen jeweils die Werte zu anderen Personen analog zu oben. Die Reihenfolge muss halt stimmen, sonst wäre es nur eine Datenliste und keine Highscore.


Vg Erdal
 
Hallo Flashray
Nur die werte ausgeben reicht leider nicht aus.
In etwa müsste es so aussehen:

Platz Name Punkte WievieleVokab RichtigVokab FalschVokab
----------------------------------------------------------------------------------------------------------
1 flash 200 50 30 20
2 aro 195 60 29 31
3 flash 180 55 25 30
.
.
.
.
.
.
10 aro 45 80 15 65
-------------------------------------------------------------------------------------------------

Diese tabelle müsste auch irgendwie gespeichert werden,
damit man beim nächsten spielen wieder auf die Werte zugreifen
kann.Am besten in ein Text Dokument welches man erst ausliest ggf.
ändert und wieder speichert.
Das ist mein problem...

PS: Die Daten sollten natürlich dierekt untereinander stehen. Ich habe es hier auf dem Board mit Tabulator nicht hinbekommen.
 
Zuletzt bearbeitet:
Hallo,

du brauchst jetzt drei Methoden hierfür:

loadScoreLists()

storeLastScore()

showHighScore()

Das speichern und lesen tust du in eine Textdatei mit Hilfe der Klasse Properties:
http://www.galileocomputing.de/open...sel11_006.htm#Rxx747java11006040003921F020100
http://de.wikipedia.org/wiki/Java-Properties-Datei
http://javaalmanac.com/egs/java.util/pkg.html#Property Files

Wobei ein Datenpaar so aussehen sollte. Für x sollte eine Zahl = Anzahl Datenpaar in Textdatei + 1 stehen
sessionx=Hans Müller/200/50/30/20

Nach dem lesen wirst du die Methode split() brauchen, mit welcher du immer ein Datenpaar auftrennst in seine Bestandteile und in ein mehrdimensionales Array[Anzahl Datenpaar in Textdatei+1][Anzahl spalten hier 5] speicherst.

In die letzte Zeile speicherst du dann die aktuellen Werte. Jetzt kannst in der Methode showHighScore() aus den Werten den Rang berechnen und dann nach der Reihenfolge mit System.out.println() ausgeben.

Versuch mal bitte diese drei Methoden zu implementieren. Und schreib deine Zwischenergebnisse hier ins Forum und eventuell wo es noch Probleme gibt.

Vg Erdal
 
hallo flashray
erstmal vielen Dank für deine Hilfe und gedult.
Ich muss hier halt nochmal betonen, das ich ein anfänger bin. Ich habe mir die Links des öfteren durchgelesen jedoch ohne erfolg. Die Klasse Properties höre ich das erstemal und weiss noch nicht einmal richtig was es aus sich hat. Ich kann mir nichts darunter vorstellen.
Es sieht nach einer sehr eleganten art und weise des programmierens aus. Währe es möglich, mir das nochmal schritt für schritt mit beispielen zu zeigen? Ich blicke da einfach nicht durch!
Ich habe eine txt Datei erstellt wo ich zehn namen mit den dazugehörigen werten gespeichert habe, die durch ein komma getrennt sind z.B. (Hans,300,50,30,20)
Wie muss ich jetzt weiter vorgehen bitte mit beispiel.

MfG
 
Hallo,

ich hatte für meine Programme mal eine Hilfsklasse für Properties geschrieben. Du könntest sowohl diese Klasse in deinem Programm nuzten, als auch hast du hier 4 Beispiele wie man die Klasse Properties anwendet.

Java:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class PropertiesHelp {

	private String file = "";

	public PropertiesHelp(String qfile) {
		file = qfile;
	}

	public String get(String key) {
		String out = "";
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			out = prop.getProperty(key);
		} catch (IOException e) {
		}
		return out;
	}

	public void set(String key, String value) {
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			prop.setProperty(key, value);
			FileOutputStream out = new FileOutputStream(file);
			prop.store(out, null);
			out.close();
		} catch (IOException e) {
		}
	}

	public boolean contain(String key) {
		boolean out = false;
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			out = prop.containsKey(key);
		} catch (IOException e) {
		}
		return out;
	}

	public boolean empty() {
		boolean out = false;
		try {
			Properties prop = new Properties();
			FileInputStream in = new FileInputStream(file);
			prop.load(in);
			in.close();
			out = prop.isEmpty();
		} catch (IOException e) {
		}
		return out;
	}
}


Vg Erdal
 
Wie kann ich die in eine Methode einbauen
Oder wie kann ich zwei klassen miteinander verbinden
Sind jetz in dem beispiel 4 eigenständige programme? wenn ja wo fangen die an und wo hören die auf
Kannst du mir vielleicht den Quellcode nur ein wenig erklären um genau zu wissen was da überhaupt gemacht wird.
MfG
 
Zurück