package tpe.ui; import java.util.ArrayList; import java.util.Scanner; import tpe.exceptions.RobotException; import tpe.exceptions.roboter.RobotFactory; import tpe.facade.FactorySystem; public class UI { private FactorySystem fs; Scanner sc = new Scanner(System.in); public UI (FactorySystem fs) { this.fs = fs; menu(); } private void menu() { System.out.println("Willkommen bei der " + fs.getFName() + "!"); mainloop: while (true) { System.out.println(); System.out.println("--------"); System.out.println("Hauptmenü"); System.out.println("1 -> Alle Roboter anzeigen"); System.out.println("2 -> Einen neuen Roboter erstellen"); System.out.println("3 -> Einen Roboter wählen und mit diesem arbeiten"); System.out.println("4 -> Beenden"); System.out.println(); System.out.print("> "); int input = Integer.parseInt(sc.nextLine()); System.out.println(); switch(input) { // case 1: showRobots(); break; case 2: buildRobot(); break; case 3: choseRobot(); break; case 4: break mainloop; } System.out.println(); } } // private void showRobots() { // // System.out.println("Folgende Roboter wurden bereits erstellt: "); // // // Seriennummer, Typ und Name aller Roboter soll aufgelistet werden // } private void buildRobot() { System.out.println("Sie haben sich dazu entschieden einen Roboter zu bauen. " + "Wenn Sie einen Roboter vom Typ R2D2 bauen möchten, dann drücken Sie die (1). " + "Wenn Sie einen Roboter vom TYp C3PO bauen möchten, dann drücken Sie die (2)."); System.out.print("> "); int robotType = Integer.parseInt(sc.nextLine()); //robotType als Variable für Typ System.out.println(); //Namensgabe System.out.println("Welchen Namen möchten Sie dem Roboter geben?"); System.out.print("> "); String name = sc.nextLine(); //name als Variable für Name System.out.println(); int serialnumber = fs.constructRobot( robotType, name); System.out.println("Sie haben einen Roboter vom Typ " + robotType + " mit dem Namen " + name + " mit der Seriennummer " + serialnumber + " erstellt."); } private void choseRobot() { System.out.println("Geben Sie die Seriennummer des Roboters ein, mit dem Sie arbeiten möchten."); System.out.print("> "); int id = Integer.parseInt(sc.nextLine()); System.out.println(); // if (id ist nicht vorhanden ) // System.out.println("Es exisitiert kein Roboter mit der Seriennummer " + id " ."); // else loop: while (true) { System.out.println("Was möchten Sie mit Ihrem Roboter tun?"); System.out.println("1 -> Zustand des Roboters"); System.out.println("2 -> AN oder Aus schalten"); System.out.println("3 -> Roboter spricht"); System.out.println("4 -> Letzte Fehlermeldung auslesen"); // Haben bzw. brauchen wir solch eine Funktion System.out.println("5 -> Daten des Roboters abrufen"); System.out.println("6 -> Zurück ins Hauptmenü"); System.out.print("> "); int input = Integer.parseInt(sc.nextLine()); switch (input) { case 1: robotStatus(id); break; case 2: onoffbutton(id); break; case 3: robotSpeak(id); break; case 4: lastError(id); break; case 5: robotData(id); break; case 6: break loop; } } } /** * Gibt den Status des Roboters an * @param id */ private void robotStatus(int id) { boolean status = fs.powerStatus(id); if (status == true) System.out.println("Der Roboter ist angeschaltet."); else System.out.println("Der Roboter ist ausgeschaltet."); } private void onoffbutton(int id) { boolean status = fs.triggerPower(id); if (status == true) System.out.println("Der Roboter wurde eingeschaltet."); else System.out.println("Der Roboter wurde ausgeschaltet."); System.out.println(); } private void robotSpeak(int id) { ArrayList arrayNumbers = new ArrayList<>(); boolean next = true; System.out.println("Um den Robotersprechen zu lassen, müssen Sie eine beliebig lange Folge von ganzen Zahlen angeben"); System.out.println(); System.out.println("Geben Sie die 1. Zahl Ihrer Folge ein."); int num = Integer.parseInt(sc.nextLine()); arrayNumbers.add(num); int i = 2; while (next) { System.out.println("Geben Sie die " + i + ". Zahl Ihrer Folge ein." ); num = Integer.parseInt(sc.nextLine()); arrayNumbers.add(num); System.out.println("Wenn Sie eine weiter Zahl eingeben möchten, wählen Sie (1). Wenn Sie die Eingabe beenden möchten (2)."); int election = Integer.parseInt(sc.nextLine()); if (election == 1) { i++; next = true; } else { next = false; int [] numbers = arrayNumbers.stream().mapToInt(j -> j).toArray(); String output; try { output = fs.robotInstructions(id, numbers); System.out.println("Der Roboter gibt folgendes aus: " + output); } catch (RobotException e) { System.out.println("Fehler!"); } } } } private void lastError(int id) { System.out.println(fs.robotBlackbox(id)); } private void robotData(int id) { System.out.println(fs.robotInfo(id)); } }