generated from hummel/Bank-System
242 lines
5.6 KiB
Java
242 lines
5.6 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<65>");
|
||
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() {
|
||
String[] robots = fs.getRobotStock();
|
||
if (robots.length > 0) {
|
||
System.out.println("Folgende Roboter sind verfügbar:");
|
||
for (String r : robots) {
|
||
System.out.println(r);
|
||
}
|
||
} else {
|
||
System.out.println("Bisher keine Roboter konstruiert.");
|
||
}
|
||
}
|
||
|
||
// private void showRobots() {
|
||
//
|
||
// System.out.println("Folgende Roboter wurden bereits erstellt: ");
|
||
//
|
||
// // Seriennummer, Typ und Name aller Roboter soll aufgelistet werden
|
||
// }
|
||
|
||
private void buildRobot() {
|
||
String name = null;
|
||
|
||
System.out.println("Sie haben sich dazu entschieden einen Roboter zu bauen. "
|
||
+ "Wenn Sie einen Roboter vom Typ R2D2 bauen m<>chten, dann dr<64>cken Sie die (1). "
|
||
+ "Wenn Sie einen Roboter vom Typ C3PO bauen m<>chten, dann dr<64>cken Sie die (2).");
|
||
|
||
System.out.print("> ");
|
||
int robotType = Integer.parseInt(sc.nextLine());
|
||
|
||
if (robotType > 2 || robotType < 1) {
|
||
System.out.println(
|
||
"Es stehen nur (1) oder (2) bei der Auswahl des Robotertypen zur verf<72>gung. Bitte erneut w<>hlen.");
|
||
System.out.println();
|
||
buildRobot();
|
||
} else {
|
||
System.out.println();
|
||
|
||
// Namensgabe
|
||
|
||
boolean realname = true;
|
||
|
||
while (realname) {
|
||
System.out.println("Welchen Namen m<>chten Sie dem Roboter geben.");
|
||
|
||
System.out.print("> ");
|
||
name = sc.nextLine();
|
||
|
||
if (name != "")
|
||
break;
|
||
|
||
}
|
||
|
||
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<75>ck ins Hauptmen<65>");
|
||
|
||
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));
|
||
// }
|
||
|
||
}
|