From fedf21b3e4b09573448cd7c11e66b11e698cb9c0 Mon Sep 17 00:00:00 2001 From: Philipp Kotte Date: Thu, 19 Oct 2023 16:44:03 +0200 Subject: [PATCH] =?UTF-8?q?Spieler=20am=20Zug=20hinzuf=C3=BCgen=20und=20ak?= =?UTF-8?q?tualisieren=20vor=20dem=20Spiel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes Domain/Exceptions/EmptyListException.java | 13 ++ Domain/Exceptions/SpielException.java | 65 ++++++++ .../Exceptions/SpielerNotFoundException.java | 15 ++ Domain/Spieler.java | 7 +- Facade/Spiel.java | 52 +++++-- UI/SpielCLI.java | 147 +++++++++++++----- 7 files changed, 243 insertions(+), 56 deletions(-) create mode 100644 Domain/Exceptions/EmptyListException.java create mode 100644 Domain/Exceptions/SpielException.java create mode 100644 Domain/Exceptions/SpielerNotFoundException.java diff --git a/.DS_Store b/.DS_Store index decf7a6645ce0e22dcfdb786509b05a32cb7948e..d111a3bbb1d0d8e301495c41c23888a9352c95d3 100644 GIT binary patch delta 33 pcmZp1XmOa}&&aniU^hP_-)0_xYb=`|@u)IyW|#QRvaynl834S-3c~;Z delta 148 zcmZp1XmOa}&&a= 1) { + this.spielerAmZug = (Spieler) this.spieler.values().toArray()[0]; + } } } \ No newline at end of file diff --git a/UI/SpielCLI.java b/UI/SpielCLI.java index 41ad74c..c40479c 100644 --- a/UI/SpielCLI.java +++ b/UI/SpielCLI.java @@ -10,11 +10,18 @@ package UI; import Facade.Spiel; import Domain.Spieler; import Domain.Enums.Geschlecht; +import Domain.Exceptions.EmptyListException; +import Domain.Exceptions.SpielerNotFoundException; import java.util.Scanner; public class SpielCLI { + private static final String ANSI_RESET = "\u001B[0m"; + private static final String ANSI_GREEN = "\u001B[32m"; + private static final String ANSI_RED = "\u001B[31m"; + public static final String ANSI_BLUE = "\u001B[34m"; + Scanner sc = new Scanner(System.in); private Spiel spiel; @@ -26,14 +33,13 @@ public class SpielCLI { public void hauptmenue() { System.out.println("Hallo Wanderer"); mainloop: while (true) { - System.out.println(""); - System.out.println("Was sillst du tun"); - System.out.println("--------Hauptmenü--------"); - System.out.println("-1- Spiel starten"); - System.out.println("-2- Spieler hinzufügen"); - System.out.println("-3- Spiel to String"); - System.out.println("-4- Spieler löschen"); - System.out.println("-5- Exit"); + print(""); + print("--------Hauptmenü--------"); + print(ANSI_BLUE + "-1-" + ANSI_RESET + " Spiel starten"); + print(ANSI_BLUE + "-2-" + ANSI_RESET + " Spieler hinzufügen"); + print(ANSI_BLUE + "-3-" + ANSI_RESET + " Spiel to String"); + print(ANSI_BLUE + "-4-" + ANSI_RESET + " Spieler löschen"); + print(ANSI_BLUE + "-5-" + ANSI_RESET + " Exit"); int input = 0; @@ -45,46 +51,16 @@ public class SpielCLI { switch (input) { case 1: - this.spiel.starteSpiel(); - System.out.println("Noch nicht implementiert."); + spielStarten(); break; case 2: - System.out.println("Gib den Namen des Spielers an"); - String name = sc.nextLine(); - System.out.println("Gib das Geschlecht an."); - System.out.println("Männlich (M), Weiblich (W), Divers (D), KI (K)"); - String geschlecht = sc.nextLine(); - switch (geschlecht) { - case "W": - spiel.addSpieler(name, Geschlecht.W); - break; - case "M": - spiel.addSpieler(name, Geschlecht.M); - break; - case "D": - spiel.addSpieler(name, Geschlecht.D); - break; - case "K": - spiel.addSpieler(name, Geschlecht.KI); - break; - default: - System.out.println("Diese eingabe ist nicht gültig"); - break; - - } + addSpieler(); break; - case 3: System.out.println(spiel.toString()); break; case 4: - System.out.println("Welchen Spieler willst du löschen?"); - - String[] spieler = spiel.getAlleSpieler(); - for (int i = 0; i < spieler.length; i++) { - System.out.println("[" + (i + 1) + "]: " + spieler[i]); - } - + spielerLöschen(); break; case 5: break mainloop; @@ -95,4 +71,93 @@ public class SpielCLI { System.out.println("auf wiedersehen!"); } + private void spielStarten() { + this.spiel.starteSpiel(); + System.out.println("Noch nicht implementiert."); + } + + private void addSpieler() { + int spieler_anzahl = this.spiel.getAlleSpieler().length; + if (spieler_anzahl <= 5) { + System.out.println("Gib den Namen des Spielers an"); + String name = sc.nextLine(); + System.out.println("Gib das Geschlecht an."); + System.out.println("Männlich (M), Weiblich (W), Divers (D), KI (K)"); + String geschlecht = sc.nextLine(); + switch (geschlecht) { + case "W": + spiel.addSpieler(name, Geschlecht.W); + break; + case "M": + spiel.addSpieler(name, Geschlecht.M); + break; + case "D": + spiel.addSpieler(name, Geschlecht.D); + break; + case "K": + spiel.addSpieler(name, Geschlecht.KI); + break; + default: + System.out.println("Diese eingabe ist nicht gültig"); + break; + + } + + } else { + System.out.println("Die Maximale Spieleranzahl ist erreicht."); + } + + } + + private void spielerLöschen() { + + if (this.spiel.getAlleSpieler().length >= 1) { + System.out.println("Welchen Spieler willst du löschen?"); + System.out.println("Gib die ID des Spielers an."); + + String[] spieler = spiel.getAlleSpieler(); + for (int i = 0; i < spieler.length; i++) { + System.out.println(spieler[i]); + } + + int _id = Integer.parseInt(sc.nextLine()); + System.out.println(_id); + for (String s : spieler) { + if (s.contains("ID: " + _id)) { + System.out.println("Sicher das du " + s + " löschen willst?"); + } + } + boolean valid_choice = false; + while (!valid_choice) { + System.out.println("Ja [j] Nein [n]"); + String wahl = sc.nextLine(); + switch (wahl) { + case "j": + valid_choice = true; + try { + spiel.removeSpieler(_id); + System.out.println("Spieler löschen erfolgreich!"); + } catch (SpielerNotFoundException | EmptyListException | RuntimeException e) { + System.out.println(e.getMessage()); + } + + break; + case "n": + System.out.println("Spieler löschen abgebrochen!"); + valid_choice = true; + break; + default: + System.out.println("Diese Auswhal ist nicht gültig"); + } + } + } else { + System.out.println("Es existieren keine Spieler zum löschen."); + } + + } + + private void print(String message) { + System.out.println(message); + } + } \ No newline at end of file