/* ============================================================ 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 // Statische Attribute private static int id = 1; // Interner Zähler für Prüfung max Spieler private static String botname = "Spieler (KI): "; // KI erhält einen festen Namen + aktuelle 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 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 */ public Spieler(Geschlecht geschlecht) { if (id <= 6) { if (geschlecht != Geschlecht.KI) { setGeschlecht(geschlecht); setVorhersage(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; } // Overrides // Public Methoden // Private Methoden private void setNeuerBot(Geschlecht geschlecht) { this.spielerID = id; this.name = botname + id; this.geschlecht = geschlecht; this.vorhersage = 0; setId(); } private void setId() { id++; } }