mehrere Runden möglich

This commit is contained in:
Marc Koch 2020-04-08 09:44:01 +02:00
parent edd5ee450b
commit af41af9366
1 changed files with 90 additions and 71 deletions

View File

@ -14,6 +14,9 @@ public class hangman {
CSVDatei csv = new CSVDatei("", "Woerter.csv");
ArrayList<String> woerter = csv.lese();
boolean beenden = false;
while (!beenden) {
// Wort per zufall auswählen
StringBuilder wort = new StringBuilder(woerter.get((int) (Math.random() * (woerter.size() - 1))));
StringBuilder wortLowerCase = new StringBuilder(wort.toString().toLowerCase());
@ -25,87 +28,103 @@ public class hangman {
// Maske ausgeben
System.out.println(maske.toString());
int versuche = 12;
int zaehler = 0;
boolean geloest = false;
boolean eingabeOkay;
int versuche = 12;
int zaehler = 0;
boolean geloest = false;
while (!wortLowerCase.toString().equals(maskeVorlage.toString()) && versuche != 0 && !geloest) {
while (!wortLowerCase.toString().equals(maskeVorlage.toString()) && versuche != 0 && !geloest) {
// Eingabe erfassen und verifizieren
String eingabe = "";
eingabeOkay = false;
while (!eingabeOkay) {
System.out.println(zaehler == 0 ? "Bitte raten Sie einen Buchstaben! (Geben Sie ein \"!\" ein, um zu lösen)" + " | übrige Versuche: " + versuche :
"Bitte raten Sie einen weiteren Buchstaben oder lösen Sie (\"!\")" + " | übrige Versuche: " + versuche);
eingabe = scanner.next().trim().toLowerCase();
if (!eingabe.matches("[A-Za-zäöüÄÖÜ!]{1}")) {
System.err.println("Sie dürfen nur einen einzelnen Buchstaben eingeben! (z.B: \"M\" oder \"m\")");
} else {
// Soll ein Lösungswort eingegeben werden?
if (eingabe.equals("!")) {
System.out.println("Bitte geben Sie das Lösungswort ein! (\"!\" zum Abbrechen)");
eingabe = scanner.next().trim().toLowerCase();
if (!eingabe.matches("[A-Za-zäöüÄÖÜ!]+")) {
System.out.println("Es sind nur Buchstaben erlaubt!");
} else if (eingabe.equals("!")) {
} else {
// Wenn das Lösungswort stimmt
if (eingabe.trim().toLowerCase().equals(wort.toString().toLowerCase())) {
zaehler++;
System.out.println();
System.out.println("Richtig!");
geloest = true;
eingabeOkay = true;
// Wenn das Lösungswort nicht stimmt
} else {
versuche--;
zaehler++;
System.out.println();
System.out.println("Leider falsch!");
System.out.println(maske.toString());
}
}
// Wenn ein Buchstabe geraten wurde
// Eingabe erfassen und verifizieren
String eingabe = "";
boolean eingabeOkay = false;
while (!eingabeOkay) {
System.out.println(zaehler == 0 ? "Bitte raten Sie einen Buchstaben! (Geben Sie ein \"!\" ein, um zu lösen)" + " | übrige Versuche: " + versuche :
"Bitte raten Sie einen weiteren Buchstaben oder lösen Sie (\"!\")" + " | übrige Versuche: " + versuche);
eingabe = scanner.next().trim().toLowerCase();
if (!eingabe.matches("[A-Za-zäöüÄÖÜ!]{1}")) {
System.err.println("Sie dürfen nur einen einzelnen Buchstaben eingeben! (z.B: \"M\" oder \"m\")");
} else {
eingabeOkay = true;
// Soll ein Lösungswort eingegeben werden?
if (eingabe.equals("!")) {
System.out.println("Bitte geben Sie das Lösungswort ein! (\"!\" zum Abbrechen)");
eingabe = scanner.next().trim().toLowerCase();
if (!eingabe.matches("[A-Za-zäöüÄÖÜ!]+")) {
System.out.println("Es sind nur Buchstaben erlaubt!");
} else if (eingabe.equals("!")) {
} else {
// Wenn das Lösungswort stimmt
if (eingabe.trim().toLowerCase().equals(wort.toString().toLowerCase())) {
zaehler++;
System.out.println();
System.out.println("Richtig!");
geloest = true;
eingabeOkay = true;
// Wenn das Lösungswort nicht stimmt
} else {
versuche--;
zaehler++;
System.out.println();
System.out.println("Leider falsch!");
System.out.println(maske.toString());
}
}
// Wenn ein Buchstabe geraten wurde
} else {
eingabeOkay = true;
}
}
}
if (!geloest) {
if (wortLowerCase.indexOf(eingabe) == -1) {
System.out.println("Der geratene Buchstabe ist nicht im Lösungswort enthalten.");
versuche--;
}
// Eingabe verarbeiten
while (wortLowerCase.indexOf(eingabe) != -1) {
maske.replace(wortLowerCase.indexOf(eingabe), (wortLowerCase.indexOf(eingabe) + 1),
String.valueOf(wort.charAt(wortLowerCase.indexOf(eingabe))));
wortLowerCase.replace(wortLowerCase.indexOf(eingabe), (wortLowerCase.indexOf(eingabe) + 1), "*");
}
// Zaehler herunterzählen
zaehler++;
// Maske ausgeben
System.out.println();
System.out.println(maske.toString());
}
}
if (!geloest) {
if (wortLowerCase.indexOf(eingabe) == -1) {
System.out.println("Der geratene Buchstabe ist nicht im Lösungswort enthalten.");
versuche--;
}
// Eingabe verarbeiten
while (wortLowerCase.indexOf(eingabe) != -1) {
maske.replace(wortLowerCase.indexOf(eingabe), (wortLowerCase.indexOf(eingabe) + 1),
String.valueOf(wort.charAt(wortLowerCase.indexOf(eingabe))));
wortLowerCase.replace(wortLowerCase.indexOf(eingabe), (wortLowerCase.indexOf(eingabe) + 1), "*");
}
// Zaehler herunterzählen
zaehler++;
// Maske ausgeben
System.out.println();
System.out.println(maske.toString());
// Ausgabe: Spiel gewonnen / verloren
if (zaehler == 0) {
System.out.println("Sie haben verloren!");
} else {
System.out.println("Sie haben mit " + zaehler + " Spielzügen gewonnen!");
}
}
// Ausgabe: Spiel gewonnen / verloren
if (zaehler == 0) {
System.out.println("Sie haben verloren!");
} else {
System.out.println("Sie haben mit " + zaehler + " Spielzügen gewonnen!");
}
boolean frage = true;
System.out.println("Möchten Sie noch eine Runde spielen? (j/n)");
while (frage) {
String eingabe = "";
eingabe = scanner.next().trim().toLowerCase();
if (eingabe.matches("[jn]{1}")) {
if (eingabe.equals("n")) {
beenden = true;
frage = false;
} else {
frage = false;
}
} else {
System.out.println("Bitte geben Sie \"j\" für ein weiteres Spiel oder \"n\" zum Beenden ein");
}
}
}
}
public static StringBuilder erzeugeMaske(String wort) {