forked from 2211945/WIZARD_PR2_DOP
Spieler am Zug hinzufügen und aktualisieren vor dem Spiel
parent
e68df5a6bb
commit
fedf21b3e4
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
============================================================
|
||||||
|
This is the "EmptyListException" file from Author: Philipp Kotte
|
||||||
|
written on: 16 / 10 / 2023 at: 07:54
|
||||||
|
============================================================
|
||||||
|
*/
|
||||||
|
package Domain.Exceptions;
|
||||||
|
|
||||||
|
public class EmptyListException extends SpielException {
|
||||||
|
public EmptyListException(String message) {
|
||||||
|
super(10, message);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
============================================================
|
||||||
|
This is the "SpielException" file from Author: Philipp Kotte
|
||||||
|
written on: 16 / 10 / 2023 at: 07:42
|
||||||
|
============================================================
|
||||||
|
*/
|
||||||
|
package Domain.Exceptions;
|
||||||
|
|
||||||
|
public abstract class SpielException extends Exception {
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// statische Konstanten
|
||||||
|
/*------------------------------------------*/
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// statische Attribute(zB. zähler)
|
||||||
|
/*------------------------------------------*/
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// Attribute jedes Objektes
|
||||||
|
/*------------------------------------------*/
|
||||||
|
private String message;
|
||||||
|
private int id;
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// Konstruktoren (default und spezifische)
|
||||||
|
/*------------------------------------------*/
|
||||||
|
public SpielException() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpielException(int id, String message) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpielException(String message) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// statische Methoden
|
||||||
|
/*------------------------------------------*/
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// Getter und Setter
|
||||||
|
/*------------------------------------------*/
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// @Overrides
|
||||||
|
/*------------------------------------------*/
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return this.message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getID() {
|
||||||
|
return this.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// öffentliche Methodes
|
||||||
|
/*------------------------------------------*/
|
||||||
|
|
||||||
|
/*------------------------------------------*/
|
||||||
|
// Hilfsmethoden (privat)
|
||||||
|
/*------------------------------------------*/
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
============================================================
|
||||||
|
This is the "SpielerNotFoundException" file from Author: Philipp Kotte
|
||||||
|
written on: 16 / 10 / 2023 at: 07:50
|
||||||
|
============================================================
|
||||||
|
*/
|
||||||
|
package Domain.Exceptions;
|
||||||
|
|
||||||
|
public class SpielerNotFoundException extends SpielException {
|
||||||
|
|
||||||
|
public SpielerNotFoundException(String message) {
|
||||||
|
super(1, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ import Domain.Enums.Geschlecht;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
public class Spieler implements Serializable {
|
public class Spieler extends Object implements Serializable {
|
||||||
|
|
||||||
/*------------------------------------------*/
|
/*------------------------------------------*/
|
||||||
// statische Konstanten
|
// statische Konstanten
|
||||||
|
@ -168,11 +168,6 @@ public class Spieler implements Serializable {
|
||||||
return "ID: " + this.id + " Name: " + this.name + " (" + this.geschlecht + ")";
|
return "ID: " + this.id + " Name: " + this.name + " (" + this.geschlecht + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean equals(Spieler spieler) {
|
|
||||||
return this.id == spieler.getId() && this.geschlecht == spieler.getGeschlecht()
|
|
||||||
&& this.name.equals(spieler.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------*/
|
/*------------------------------------------*/
|
||||||
// öffentliche Methodes
|
// öffentliche Methodes
|
||||||
/*------------------------------------------*/
|
/*------------------------------------------*/
|
||||||
|
|
|
@ -14,6 +14,8 @@ import Domain.Spieler;
|
||||||
import Domain.Stich;
|
import Domain.Stich;
|
||||||
import Domain.Block.Block;
|
import Domain.Block.Block;
|
||||||
import Domain.Enums.Geschlecht;
|
import Domain.Enums.Geschlecht;
|
||||||
|
import Domain.Exceptions.EmptyListException;
|
||||||
|
import Domain.Exceptions.SpielerNotFoundException;
|
||||||
import Domain.Karten.Karte;
|
import Domain.Karten.Karte;
|
||||||
|
|
||||||
public class Spiel implements Serializable {
|
public class Spiel implements Serializable {
|
||||||
|
@ -22,6 +24,11 @@ public class Spiel implements Serializable {
|
||||||
// statische Konstanten
|
// statische Konstanten
|
||||||
/*--------------------------------------------------------*/
|
/*--------------------------------------------------------*/
|
||||||
|
|
||||||
|
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";
|
||||||
|
|
||||||
/*--------------------------------------------------------*/
|
/*--------------------------------------------------------*/
|
||||||
// statische Attribute(zB. zähler)
|
// statische Attribute(zB. zähler)
|
||||||
/*--------------------------------------------------------*/
|
/*--------------------------------------------------------*/
|
||||||
|
@ -91,11 +98,20 @@ public class Spiel implements Serializable {
|
||||||
if (this.spieler.size() == 0) {
|
if (this.spieler.size() == 0) {
|
||||||
text += "Noch keine Spieler vorhanden \n";
|
text += "Noch keine Spieler vorhanden \n";
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < this.spieler.size(); i++) {
|
for (Spieler s : this.spieler.values()) {
|
||||||
text += "Spieler " + (i + 1) + ": " + this.spieler.get(i + 1).getName() + " ("
|
text += "[" + s.getId() + "] " + s.getName() + " ("
|
||||||
+ this.spieler.get(i + 1).getGeschlecht() + ")" + "\n";
|
+ s.getGeschlecht() + ")" + "\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < this.id_check.length; i++) {
|
||||||
|
if (this.id_check[i]) {
|
||||||
|
text += "idcheck" + ANSI_BLUE + " [" + i + "] " + ANSI_GREEN + this.id_check[i] + ANSI_RESET + " \n";
|
||||||
|
} else {
|
||||||
|
text += "idcheck" + ANSI_BLUE + " [" + i + "] " + ANSI_RED + this.id_check[i] + ANSI_RESET + " \n";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
text += footer;
|
text += footer;
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
@ -113,16 +129,32 @@ public class Spiel implements Serializable {
|
||||||
Spieler temp = new Spieler(id, name, geschlecht);
|
Spieler temp = new Spieler(id, name, geschlecht);
|
||||||
this.spieler.put(id, temp);
|
this.spieler.put(id, temp);
|
||||||
System.out.println(this.spieler.get(id));
|
System.out.println(this.spieler.get(id));
|
||||||
|
if (this.spielerAmZug == null) {
|
||||||
|
this.spielerAmZug = temp;
|
||||||
|
}
|
||||||
|
updateSpielerAmZug();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeSpieler(int id_spieler) {
|
public void removeSpieler(int id_spieler) throws SpielerNotFoundException, EmptyListException, RuntimeException {
|
||||||
this.spieler.remove(id_spieler);
|
if (this.spieler.containsKey(id_spieler)) {
|
||||||
|
this.spieler.remove(id_spieler);
|
||||||
|
this.id_check[id_spieler - 1] = false;
|
||||||
|
} else if (!this.spieler.containsKey(id_spieler)) {
|
||||||
|
throw new SpielerNotFoundException("Dieser Spieler existiert nicht");
|
||||||
|
} else if (this.spieler.values().size() == 0) {
|
||||||
|
throw new EmptyListException("Dise Liste ist Leer.");
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("Unkown Error");
|
||||||
|
}
|
||||||
|
updateSpielerAmZug();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getAlleSpieler() {
|
public String[] getAlleSpieler() {
|
||||||
String[] spieler_text = new String[this.spieler.size()];
|
String[] spieler_text = new String[this.spieler.size()];
|
||||||
for (int i = 0; i < this.spieler.size(); i++) {
|
int zähler = 0;
|
||||||
spieler_text[i] = this.spieler.get(i + 1).toString();
|
for (Spieler s : this.spieler.values()) {
|
||||||
|
spieler_text[zähler] = s.toString();
|
||||||
|
zähler++;
|
||||||
}
|
}
|
||||||
return spieler_text;
|
return spieler_text;
|
||||||
}
|
}
|
||||||
|
@ -197,8 +229,10 @@ public class Spiel implements Serializable {
|
||||||
stich.getKarten();
|
stich.getKarten();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void spieler() {
|
private void updateSpielerAmZug() {
|
||||||
|
if (this.spieler.size() >= 1) {
|
||||||
|
this.spielerAmZug = (Spieler) this.spieler.values().toArray()[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
147
UI/SpielCLI.java
147
UI/SpielCLI.java
|
@ -10,11 +10,18 @@ package UI;
|
||||||
import Facade.Spiel;
|
import Facade.Spiel;
|
||||||
import Domain.Spieler;
|
import Domain.Spieler;
|
||||||
import Domain.Enums.Geschlecht;
|
import Domain.Enums.Geschlecht;
|
||||||
|
import Domain.Exceptions.EmptyListException;
|
||||||
|
import Domain.Exceptions.SpielerNotFoundException;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class SpielCLI {
|
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);
|
Scanner sc = new Scanner(System.in);
|
||||||
private Spiel spiel;
|
private Spiel spiel;
|
||||||
|
|
||||||
|
@ -26,14 +33,13 @@ public class SpielCLI {
|
||||||
public void hauptmenue() {
|
public void hauptmenue() {
|
||||||
System.out.println("Hallo Wanderer");
|
System.out.println("Hallo Wanderer");
|
||||||
mainloop: while (true) {
|
mainloop: while (true) {
|
||||||
System.out.println("");
|
print("");
|
||||||
System.out.println("Was sillst du tun");
|
print("--------Hauptmenü--------");
|
||||||
System.out.println("--------Hauptmenü--------");
|
print(ANSI_BLUE + "-1-" + ANSI_RESET + " Spiel starten");
|
||||||
System.out.println("-1- Spiel starten");
|
print(ANSI_BLUE + "-2-" + ANSI_RESET + " Spieler hinzufügen");
|
||||||
System.out.println("-2- Spieler hinzufügen");
|
print(ANSI_BLUE + "-3-" + ANSI_RESET + " Spiel to String");
|
||||||
System.out.println("-3- Spiel to String");
|
print(ANSI_BLUE + "-4-" + ANSI_RESET + " Spieler löschen");
|
||||||
System.out.println("-4- Spieler löschen");
|
print(ANSI_BLUE + "-5-" + ANSI_RESET + " Exit");
|
||||||
System.out.println("-5- Exit");
|
|
||||||
|
|
||||||
int input = 0;
|
int input = 0;
|
||||||
|
|
||||||
|
@ -45,46 +51,16 @@ public class SpielCLI {
|
||||||
|
|
||||||
switch (input) {
|
switch (input) {
|
||||||
case 1:
|
case 1:
|
||||||
this.spiel.starteSpiel();
|
spielStarten();
|
||||||
System.out.println("Noch nicht implementiert.");
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
System.out.println("Gib den Namen des Spielers an");
|
addSpieler();
|
||||||
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;
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
System.out.println(spiel.toString());
|
System.out.println(spiel.toString());
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
System.out.println("Welchen Spieler willst du löschen?");
|
spielerLöschen();
|
||||||
|
|
||||||
String[] spieler = spiel.getAlleSpieler();
|
|
||||||
for (int i = 0; i < spieler.length; i++) {
|
|
||||||
System.out.println("[" + (i + 1) + "]: " + spieler[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
break mainloop;
|
break mainloop;
|
||||||
|
@ -95,4 +71,93 @@ public class SpielCLI {
|
||||||
System.out.println("auf wiedersehen!");
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue