/* ============================================================ This is the "Spieler" file from Author: Philipp Kotte written on: 05 / 10 / 2023 at: 23:48 ============================================================ */ package Domain; import java.io.Serializable; import Domain.Enums.Geschlecht; public class Spieler implements Serializable{ // Statische Konstanten private final static String BOTNAME = "Spieler (KI): "; // KI erhält einen konstanten Namen + id(zähler) // Statische Attribute private static int id = 1; // Interner Zähler für Prüfung max Spieler und für Name KI(BOTNAME + id) // Attribute der Objekte private int spielerID; // Feste SpielerID zur Festlegung der Ref-Variablen private String name; // Name eines Spielers oder fester Name falls Geschlecht.KI private Geschlecht geschlecht; private Hand hand; private int vorhersage; // Konstruktoren /** * Die Prüfung, ob der @param name leer ist, muss in der Klasse Spiel erfolgen. * Es wird der @param id noch zusätzlich geprüft. * @param geschlecht wird übergeben, als MinAnforderung */ public Spieler(Geschlecht geschlecht) { if (id <= 6) { if (geschlecht != Geschlecht.KI) { setGeschlecht(geschlecht); setVorhersage(0); setHand(0); setSpielerID(id); } else { setNeuerBot(geschlecht); } } else { throw new RuntimeException("Es kann nur max 6 Spieler pro Spiel geben."); } } /** * Der Konstruktor prüft die Länge des @param name ob mehr als zwei * Zeichen übergeben wurden. Geschlecht wird mit @code this(geschlecht) an * den oberen Konstruktor übergeben. * @param geschlecht * @param name */ public Spieler(Geschlecht geschlecht, String name) { this(geschlecht); // Frage: Wird hier (auch wenn Folgebedingung nicht erfüllt) ein Bot angelegt? if (name.length() < 3) { throw new RuntimeException("Der Spielername muss min. 3 Zeichen lang sein."); } else { setName(name); } } // Statische Methoden // Getter und Setter public void setGeschlecht(Geschlecht geschlecht) { this.geschlecht = geschlecht; } public Geschlecht getGeschlecht() { return this.geschlecht; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setVorhersage(int vorhersage) { this.vorhersage = vorhersage; } public int getVorhersage() { return this.vorhersage; } public void setSpielerID(int id) { this.spielerID = id; setId(); } public int getSpielerID() { return this.spielerID; } public void setHand(int runde) { this.hand = new Hand(runde); } public Hand getHand() { return this.hand; } // Overrides // Public Methoden // Private Methoden private void setNeuerBot(Geschlecht geschlecht) { this.spielerID = id; this.name = BOTNAME + " " + id; this.geschlecht = geschlecht; setVorhersage(0); // Nicht zwingend notwendig, aber dient setHand(0); // der Übersicht aller Attribute. setId(); } private void setId() { id++; } }