Hallo zusammen,
ich hänge gerade an einer Aufgabe fest und kann jede Hilfe gebrauchen. Es geht darum, dass bei einem Hangman-Spiel die zu erratenen Worte nicht mehr aus einem Array sondern aus einer Datei ermittelt werden sollen. Die entsprechende Klasse zur Erstellung der Datei habe ich bereits und die Datei liegt auch in dem Projektordner.
Jetzt stehe ich allerdings auf dem Schlauch, wie ich die Methode für das Suchwort entsprechend abändern muss. Das Wort soll nach dem Zufallsprinzip ermittelt werden.
Das war die Methode vorher mit der Array Variante:
Und das war der Versuch die Wörter aus der Datei zu ermitteln:
Vielleicht könnt ihr mir helfen und einen Denkanstoß geben.
Danke und LG
Projo96
ich hänge gerade an einer Aufgabe fest und kann jede Hilfe gebrauchen. Es geht darum, dass bei einem Hangman-Spiel die zu erratenen Worte nicht mehr aus einem Array sondern aus einer Datei ermittelt werden sollen. Die entsprechende Klasse zur Erstellung der Datei habe ich bereits und die Datei liegt auch in dem Projektordner.
Jetzt stehe ich allerdings auf dem Schlauch, wie ich die Methode für das Suchwort entsprechend abändern muss. Das Wort soll nach dem Zufallsprinzip ermittelt werden.
Das war die Methode vorher mit der Array Variante:
Java:
//die Methode ermittelt zufällig ein Wort
private void neuesWort() {
int zufall = 0;
//die Wortliste
String[] woerter ={"Test", "Automobil", "Versuch", "Hund", "Katze",
"Ziege", "Maus", "Elefant", "Isopropylalkohol", "Schwimmbad"};
//ein zufälliges Wort ermitteln
//dazu wird eine zufällige Zahl zwischen 0 und 1 ermittelt und mit der Länge von Wörter multipliziert
zufall = (int)(Math.random() * woerter.length);
//das Suchwort und die Zeichen für die Anzeige setzen
suchwort = new String(woerter[zufall]);
anzeige = new StringBuilder(suchwort);
//alle Zeichen in der Anzeige ersetzen durch *
for (int zeichen = 0; zeichen < suchwort.length(); zeichen++)
anzeige.setCharAt(zeichen, '*');
//die Sternchen anzeigen
ausgabeText.setText(anzeige.toString());
}
Und das war der Versuch die Wörter aus der Datei zu ermitteln:
Java:
private void neuesWort() {
int zufall = 0;
suchwort = "";
// in dieser Variablen wird die Gesamtanzahl der Woerter gespeichert
int anzahl = 0;
// die Position für den Zeiger
int position = 0;
try (RandomAccessFile datei = new RandomAccessFile("HangmanWoerter.dat","r")){
anzahl = datei.readInt();
while (zufall == 0)
//per Zufall wird ein Wort ermittelt und der Variablen zufall zugeordnet.
//kommt dabei 0 raus, wird nochmal gewürfelt.
zufall = (int)(Math.random() * anzahl+1);
//Es wird nach der soeben ermittelten Position gesucht.
while (datei.getFilePointer() < datei.length()) {
//wenn die ermittelte Position mit dem int-Wert übereinstimmt,
//wird das Wort der Variable suchwort zugeordnet
if (datei.readInt() == zufall)
suchwort = datei.readUTF();
//wenn nicht, dann den Namen überlesen
else {
//die Länge beschaffen
position = datei.readUnsignedShort();
//die neue Postion ansteuern
datei.seek(datei.getFilePointer() + position);
}
}
datei.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog(null, "Fehler beim Wort laden");
}
}
Vielleicht könnt ihr mir helfen und einen Denkanstoß geben.
Danke und LG
Projo96