package gfn.marc; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; public class hangman { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); // CSV einlesen CSVDatei csv = new CSVDatei("", "Woerter.csv"); ArrayList woerter = csv.lese(); // Wort per zufall auswählen StringBuilder wort = new StringBuilder(woerter.get((int) (Math.random() * (woerter.size() - 1)))); StringBuilder wortLowerCase = new StringBuilder(wort.toString().toLowerCase()); // Zwei Masken erzeugen StringBuilder maske = erzeugeMaske(wort.toString()); StringBuilder maskeVorlage = erzeugeMaske(wort.toString()); System.out.println(wort.toString()); System.out.println(maske.toString()); int versuche = 12; int zaehler = 1; boolean geloest = false; boolean eingabeOkay; 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 = ""; eingabeOkay = false; eingabe: while (!eingabeOkay) { 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\")"); } // 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 { 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(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!"); } } public static StringBuilder erzeugeMaske(String wort) { StringBuilder maske = new StringBuilder(wort.length()); for (int i = 0; i < wort.length(); i++) { maske.append("*"); } return maske; } }