From 1f9188013184cf47a392086b741499b8552f0e87 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Tue, 7 Apr 2020 15:31:18 +0200 Subject: [PATCH] initial commit --- Woerter.csv | 11 ++++++ src/gfn/marc/CSVDatei.java | 54 ++++++++++++++++++++++++++ src/gfn/marc/hangman.java | 79 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 Woerter.csv create mode 100644 src/gfn/marc/CSVDatei.java create mode 100644 src/gfn/marc/hangman.java diff --git a/Woerter.csv b/Woerter.csv new file mode 100644 index 0000000..a752b63 --- /dev/null +++ b/Woerter.csv @@ -0,0 +1,11 @@ +Weihnachtsmann +Atmosphäre +Gymnastik +Rhythmus +Metapher +Arbeitsunfähigkeitsbescheinigung +Haftpflichtversicherung +Galionsfigur +Jackett +Zucchini +Rückgrat \ No newline at end of file diff --git a/src/gfn/marc/CSVDatei.java b/src/gfn/marc/CSVDatei.java new file mode 100644 index 0000000..3035abb --- /dev/null +++ b/src/gfn/marc/CSVDatei.java @@ -0,0 +1,54 @@ +package gfn.marc; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Scanner; +import java.util.ArrayList; + +public class CSVDatei{ + + // Attribute + private String pfad; + private String dateiname; + + + // Konstruktor + public CSVDatei(String pfad, String dateiname) { + this.pfad = pfad; + this.dateiname = dateiname; + } + + // Methode: lese() + public ArrayList lese() throws FileNotFoundException { + String pfadname = this.pfad + this.dateiname; + File csvDatei; + + // neues FileObjekt erstellen + csvDatei = new File(pfadname); + + if (csvDatei.exists()) { + Scanner eingabe; + + // neues Scanner-Objekt erstellen + eingabe = new Scanner(csvDatei); + + + // Auslesen der Daten in einer Schleife und Ablegen in einer ArrayList + ArrayList ausgabe = new ArrayList<>(); + int i = 0; + while(eingabe.hasNext()){ + String zeile = eingabe.next(); + ausgabe.add(zeile); + i++; + } + + // Verbindung schliessen und ArrayList zurückgeben + eingabe.close(); + return ausgabe; + } + return null; + } + +} diff --git a/src/gfn/marc/hangman.java b/src/gfn/marc/hangman.java new file mode 100644 index 0000000..e7e5033 --- /dev/null +++ b/src/gfn/marc/hangman.java @@ -0,0 +1,79 @@ +package gfn.marc; + +import java.io.FileNotFoundException; +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); + System.out.println(maske.toString()); + + int zaehler = wort.length() + 3; + + + 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); + + // Eingabe erfassen und verifizieren + String eingabe = ""; + while (true) { + 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 { + break; + } + } + + // 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 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; + } + +}