TUT-Aufgabe-SS25-3002544/Musterlösung/src/UI/UI.java

106 lines
4.0 KiB
Java

package UI;
import exceptions.WesenExistiertNichtException;
import facade.Teamkampf;
public class UI {
private Teamkampf teamkampfSpiel;
private boolean siegbedingung = false;
private static final int SIMULATIONSGESCHWINDIGKEIT = 500;
private int defaultAnzahlTeams = 2;
public UI() {
teamkampfSpiel = new Teamkampf();
System.out.printf("\n\nWillkommen bei Teamkampf!\n\nBitte Vergrößern Sie das Terminal für ein besseres Spielerlebnis!\n\n");
}
public void run() {
System.out.printf("Wieviele Teams möchten Sie simulieren? (Zahl > 1)\n");
int anzahlTeams = defaultAnzahlTeams;
boolean eingabeGueltig = false;
while (!eingabeGueltig) {
try {
anzahlTeams = Main.scanner.nextInt();
Main.scanner.nextLine(); // "Schluckt" den Zeilenumbruch
if (anzahlTeams > 1) {
eingabeGueltig = true;
} else {
System.out.printf("\n\nEingabe Ungültig! Bitte nur eine Zahl > 1 eingeben!\n\n");
}
} catch (java.util.InputMismatchException e) {
System.out.printf("\n\nEingabe Ungültig! Bitte nur eine Zahl eingeben!\n\n");
Main.scanner.nextLine(); // Schluckt die Ausgabe
}
}
for(int i = 1; i <= anzahlTeams; i++) {
String teamName = "Team " + i;
teamkampfSpiel.erstelleTeam(teamName);//Der Einfachheit halber alle Teams durchnummerieren
while(true) {
System.out.printf("\n\n\n\n\nWelches Mitglied möchten Sie %s hinzufügen? Sie haben Maximal %d Lagerplatz für ihre Truppen!", teamName, Teamkampf.MAXIMALLAGERPLATZ);
System.out.printf("\nDrücken Sie \"W\" um die Teammitglieder für das nächste Team auszuwählen bzw. mit der Simulation zu beginnen!\n\n");
System.out.printf("Auswahl:\nKobold: K, %d Lagerplatz\nRitter: R, %d Lagerplatz\n", teamkampfSpiel.getLagerPlatzVonWesen("K"), teamkampfSpiel.getLagerPlatzVonWesen("R")); //Hier neue Wesen zur UI hinzufügen
String neuesMitglied = Main.scanner.nextLine().toUpperCase();
try {
if (neuesMitglied.equals("W")) {
break;
}
else if (!teamkampfSpiel.addWesenToTeam(teamName, neuesMitglied)) {
System.out.printf("\nDas hat nicht geklappt! Dieses Teammitglied braucht zu viel Platz!");
}
} catch (WesenExistiertNichtException e) {
System.out.printf("\nDas hat nicht geklappt! Das ausgewählte Wesen existiert nicht!");
continue;
}
System.out.printf("\n\n\nIhre Truppen brauchen momentan %d Lagerplatz!", teamkampfSpiel.getDerzeitigerLagerPlatzVonTeam(teamName));
}
}
System.out.printf("\n\n\n\nDie Teams:\n\n");
System.out.printf(teamkampfSpiel.teamsToString() + "\n\n");
System.out.printf("Beliebige Taste, dann ENTER drücken um die Simulation zu starten.");
Main.scanner.next().toUpperCase();
System.out.printf("\n\n\n");
int runde = 1;
while(!siegbedingung) {
System.out.printf("\n\nRunde %d\n\n", runde);
teamkampfSpiel.triggerRound();
System.out.printf(teamkampfSpiel.teamsToString() + "\n\n");
try {
Thread.sleep(SIMULATIONSGESCHWINDIGKEIT);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(teamkampfSpiel.checkGewinner()){
System.out.printf("\n\n\n\nHerlichen Glückwunsch!\n\n");
System.out.printf("Der Sieger ist: " + teamkampfSpiel.teamsToString() + "\n\n");
teamkampfSpiel.gewinnerToString();
siegbedingung = true;
}
runde++;
}
}
}