Spieler am Zug hinzufügen und aktualisieren vor dem Spiel

pull/38/head
Philipp Kotte 2023-10-19 16:44:03 +02:00
parent e68df5a6bb
commit fedf21b3e4
7 changed files with 243 additions and 56 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -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);
}
}

View File

@ -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)
/*------------------------------------------*/
}

View File

@ -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);
}
}

View File

@ -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
/*------------------------------------------*/ /*------------------------------------------*/

View File

@ -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];
}
} }
} }

View File

@ -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);
}
} }