generated from hummel/Bank-System
199 lines
5.1 KiB
Java
199 lines
5.1 KiB
Java
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<Integer> 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));
|
|
}
|
|
|
|
}
|
|
|