commit f8b7cf4c0ba1175d7f1a72d680ec5957f731787b Author: Tobias Gladhorn <3019210@stud.hs-mannheim.de> Date: Tue Jan 7 19:33:17 2025 +0100 Dateien nach "wörterspiel" hochladen benötigte datein im src des semesterprojektes diff --git a/wörterspiel/Format.java b/wörterspiel/Format.java new file mode 100644 index 0000000..1707481 --- /dev/null +++ b/wörterspiel/Format.java @@ -0,0 +1,44 @@ + +public class Format { + + public static String padword(String word, int pad) { + + String result = ">>"+word; + if (result.length() >= pad-2) { + result += "<<"; + } + else { + while(result.length() <= pad-2) { + result += "-"; + } + result += "<<"; + } + return result; + } + + public static String midpadword(String word, int pad) { + + String result = word; + if (result.length() >= pad-4) { + result =">>" + result + "<<"; + } + else { + while(result.length() <= pad-4) { + result = "-" + result + "-"; + } + result =">>" + result + "<<"; + } + return result; + } + + public static void pad(int input) { + + String result = "#"; + + while(result.length() < input) { + result += "#"; + } + System.out.println(result); + + } +} \ No newline at end of file diff --git a/wörterspiel/Interface.java b/wörterspiel/Interface.java new file mode 100644 index 0000000..33d4480 --- /dev/null +++ b/wörterspiel/Interface.java @@ -0,0 +1,93 @@ +import java.util.Scanner; +import java.io.File; +import java.io.FileNotFoundException; + +public class Interface { + + public static void main(String[] arg) throws FileNotFoundException { + + menue(); + + } + + public static void menue() throws FileNotFoundException { + + welcomescreen(); + boolean menue = true; + Scanner scan = new Scanner(System.in); + + do { + + String input = scan.nextLine(); + + if (input.equalsIgnoreCase("Starten")) { + + Format.pad(141); + WortSpiel.spiel(); + menue = false; + Format.pad(141); + + }else if(input.equalsIgnoreCase("Regeln")){ + + regeln(); + welcomescreen(); + + }else if(input.equalsIgnoreCase("Spieler")) { + + Format.pad(141); + WortSpiel.spieleroptionen(); + welcomescreen(); + + }else if(input.equalsIgnoreCase("Ergebnis")) { + + Format.pad(141); + WortSpiel.ergebnis(); + welcomescreen(); + + }else if(input.equalsIgnoreCase("Back")) { + Format.pad(141); + welcomescreen(); + + }else if(input.equalsIgnoreCase("Stop")) { + menue = false; + + }else { + Format.pad(141); + System.out.println(Format.midpadword("Befehl war unzulässig!",140)); + Format.pad(141); + welcomescreen(); + } + + }while(menue); + + scan.close(); + } + + + private static void regeln() throws FileNotFoundException { + + Format.pad(141); + System.out.println(">->->->->->->->Regeln für das Wortketten-Spiel<-<-<-<-<-<-<-<"); + Scanner scan = new Scanner(new File("src/Regeln.txt")); + while(scan.hasNext()) { + System.out.println(Format.padword(scan.nextLine(), 140)); + } + Format.pad(141); + scan.close(); + } + + + private static void welcomescreen() { + Format.pad(141); + System.out.println(">->->->Willkommen beim Wörterspiel<-<-<-<"); + System.out.println(Format.padword("Starten", 40)); + System.out.println(Format.padword("Regeln", 40)); + System.out.println(Format.padword("Spieler", 40)); + System.out.println(Format.padword("Ergebnis", 40)); + System.out.println(Format.padword("Stop", 40)); + System.out.println(Format.padword("Back", 40)); + System.out.println(">>Bitte geben Sie die gewünschte Aktion an<<"); + Format.pad(141); + } + +} diff --git a/wörterspiel/Regeln.txt b/wörterspiel/Regeln.txt new file mode 100644 index 0000000..20a9acc --- /dev/null +++ b/wörterspiel/Regeln.txt @@ -0,0 +1,16 @@ +1. Spieleranzahl: Mindestens zwei Spieler. +2. Spielstart: Der erste Spieler nennt ein beliebiges Wort. Beispiel: "Apfel". +3. Spielablauf: +--- Der nächste Spieler muss ein Wort nennen, das mit dem letzten Buchstaben des vorherigen Wortes beginnt. +--- Beispiel: Wenn der erste Spieler "Apfel" sagt, muss der nächste Spieler ein Wort nennen, das mit "L" beginnt, z.B. "Lampe". +--- Die Spieler wechseln sich ab und machen so weiter, bis jemand einen Fehler macht oder kein Wort mehr einfällt. +4. Regeln: +--- Ein Wort darf in einer Runde nur einmal verwendet werden. +--- Wenn ein Spieler länger als 10 Sekunden braucht, um ein passendes Wort zu finden, hat er verloren. +5. Ende des Spiels: +--- Das Spiel endet, wenn ein Spieler kein passendes Wort mehr findet oder gegen eine der Regeln verstößt. +--- Der andere Spieler gewinnt die Runde. +6. Punkte Vergabe: +---Punkte bekommt jeder Spieler in höhe der von ihm gespielten Buchstaben. Wenn er ein Wort mit 5 Buchstaben spielt +---und eins mit 6 dann erhält er 11 Punkte. Der verlierende Spieler erhält 20 Punkte abgezogen. +Viel Spaß beim Spielen und seid kreativ! \ No newline at end of file diff --git a/wörterspiel/Spieler.java b/wörterspiel/Spieler.java new file mode 100644 index 0000000..c2434b4 --- /dev/null +++ b/wörterspiel/Spieler.java @@ -0,0 +1,27 @@ +public class Spieler { + + private String name = "Spieler"; + private int score = 0; + + Spieler(String name){ + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + System.out.println(Format.midpadword("Name wurde "+name+" geändert!", 140)); + this.name = name; + } + + public int getScore() { + return score; + } + + public void setScore(int score) { + this.score += score; + } + +} \ No newline at end of file diff --git a/wörterspiel/WortSpiel.java b/wörterspiel/WortSpiel.java new file mode 100644 index 0000000..d7fa343 --- /dev/null +++ b/wörterspiel/WortSpiel.java @@ -0,0 +1,108 @@ +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Date; +import java.util.Scanner; + +public class WortSpiel { + + public static Spieler spieler1 = new Spieler("Spieler1"); + public static Spieler spieler2 = new Spieler("Spieler2"); + + //spieler einstellungen + public static void spieleroptionen() { + + Scanner scan = new Scanner(System.in); + ergebnis(); + System.out.println(Format.padword("Wollen sie die bisherigen Spieler weiter nutzen?", 140)); + System.out.println(Format.padword("Ja/Nein", 140)); + String answer = scan.nextLine(); + if(answer.equalsIgnoreCase("ja")) { + System.out.println(Format.midpadword("Geben sie bitte den Namen des ersten Spielers ein:",140)); + String name = scan.nextLine(); + spieler1.setName(name); + + System.out.println(Format.midpadword("Geben sie bitte den Namen des zweiten Spielers ein:",140)); + name = scan.nextLine(); + spieler2.setName(name); + }else {} + } + + public static void spiel() throws FileNotFoundException { + + //initialisieren der grundlagen + System.out.println(Format.midpadword("Wortkettenspiel", 140)); + boolean spielen = true; + char letter = '*'; + Scanner scan = new Scanner(System.in); + ArrayList usedwords = new ArrayList(); + int j = 2; + Spieler turne = spieler1; + + do { + if (j%2==0) { + System.out.println(Format.padword(spieler1.getName()+" wort bitte.", 140)); + turne = spieler1; + }else { + System.out.println(Format.padword(spieler2.getName()+" wort bitte.", 140)); + turne = spieler2; + } + + //zeitmessung + long starttime = new Date().getTime(); + String word = scan.nextLine(); + + // für erstes wort + if (letter == '*') { + + letter = word.charAt(word.length() - 1); + turne.setScore(word.length()); + System.out.println(Format.padword("Jetzt ein Wort mit: " + letter, 140)); + usedwords.add(word); + + } else if (word.equals("")) { + continue; + + //antwort bei ungültigem wort + } else if(usedwords.contains(word)){ + + spielen = false; + turne.setScore(-20); + System.out.println(Format.padword("Dieses Wort wurde bereits genutzt!", 140)); + + //abfrage ob der buchstabe passt + } else if (letter == word.charAt(0)) { + + letter = word.charAt(word.length() - 1); + turne.setScore(word.length()); + System.out.println(Format.padword("Jetzt ein Wort mit: " + letter, 140)); + usedwords.add(word); + + } else { + + spielen = false; + turne.setScore(-20); + System.out.println(Format.padword("Das Wort war Falsch du hast verloren!", 140)); + + } + // abfrage antwortzeit und dementsprechende antwort + long endtime = new Date().getTime(); + long time = (endtime - starttime)/1000; + + if (time >= 10) { + + spielen = false; + System.out.println(Format.padword("Du hast verloren, "+time+"s sind zu langsam zum Antworten!", 140)); + + } + j++; + } while (spielen); + Format.pad(140); + Interface.menue(); + } + + public static void ergebnis() { + + System.out.println(Format.padword((spieler1.getName()+" hat insgesamt: "+ spieler1.getScore()+" Punkte."),140)); + System.out.println(Format.padword((spieler2.getName()+" hat insgesamt: "+ spieler2.getScore()+" Punkte."),140)); + } +}