From 3681b687e8741357b03e79a695a0f6a022fbb57b Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Tue, 7 Apr 2020 17:53:59 +0200 Subject: [PATCH] Erweiterung --- src/gfn/marc/hangman.java | 82 +++++++++++++++++++++++++++++---------- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/src/gfn/marc/hangman.java b/src/gfn/marc/hangman.java index 01b7d37..9bcb37a 100644 --- a/src/gfn/marc/hangman.java +++ b/src/gfn/marc/hangman.java @@ -1,6 +1,5 @@ package gfn.marc; -import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; @@ -23,46 +22,87 @@ public class hangman { StringBuilder maske = erzeugeMaske(wort.toString()); StringBuilder maskeVorlage = erzeugeMaske(wort.toString()); + System.out.println(wort.toString()); System.out.println(maske.toString()); - int zaehler = wort.length() + 3; + int versuche = 12; + int zaehler = 1; + boolean geloest = false; + boolean eingabeOkay; - while (!wortLowerCase.toString().equals(maskeVorlage.toString()) && zaehler != 0) { - System.out.println(zaehler == wort.length() + 3 ? " Bitte raten Sie einen Buchstaben!" + "| Versuche: " + zaehler : - " Bitte raten Sie einen weiteren Buchstaben" + "| Versuche: " + zaehler); + while (!wortLowerCase.toString().equals(maskeVorlage.toString()) && versuche != 0 && !geloest) { + 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 erfassen und verifizieren + String eingabe = ""; - while (true) { + eingabeOkay = false; + eingabe: + while (!eingabeOkay) { eingabe = scanner.next().trim().toLowerCase(); - if (!eingabe.matches("[A-Za-zäöüÄÖÜ]{1}")) { + if (!eingabe.matches("[A-Za-zäöüÄÖÜ!]{1}")) { System.err.println("Sie dürfen nur einen einzelnen Buchstaben eingeben! (z.B: \"M\" oder \"m\")"); + } + + // 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())) { + System.out.println("Richtig!"); + geloest = true; + eingabeOkay = true; + + // Wenn das Lösungswort nicht stimmt + } else { + versuche--; + System.out.println("Leider falsch!"); + System.out.println(maske.toString()); + break eingabe; + } + } } else { - break; + eingabeOkay = true; } } - // 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), "*"); + 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(maske.toString()); } - - // Zaehler herunterzählen - zaehler--; - - // Maske ausgeben - System.out.println(maske.toString()); } - // Ausgabe: Spiel gewonnen / verloren if (zaehler == 0) { System.out.println("Sie haben verloren!"); } else { - System.out.println("Sie haben gewonnen!"); + System.out.println("Sie haben mit " + zaehler + " Spielzügen gewonnen!"); } }