From 876c43babccf7d129e27a4858ca356ddc387466a Mon Sep 17 00:00:00 2001 From: Kai Sellmann <2210892@stud.hs-mannheim.de> Date: Mon, 23 Oct 2023 13:46:43 +0200 Subject: [PATCH] Klasse Spieler erstellt und Enums --- Domain/Enums/Geschlecht.java | 1 + Domain/Enums/Kartenfarbe.java | 10 +++- Domain/Spieler.java | 102 +++++++++++++++++++++++++++++++++- 3 files changed, 110 insertions(+), 3 deletions(-) diff --git a/Domain/Enums/Geschlecht.java b/Domain/Enums/Geschlecht.java index e00ffa0..05a6191 100644 --- a/Domain/Enums/Geschlecht.java +++ b/Domain/Enums/Geschlecht.java @@ -7,5 +7,6 @@ written on: 05 / 10 / 2023 at: 23:31 package Domain.Enums; public enum Geschlecht { + KI, M, W, D; } diff --git a/Domain/Enums/Kartenfarbe.java b/Domain/Enums/Kartenfarbe.java index e460755..0d83286 100644 --- a/Domain/Enums/Kartenfarbe.java +++ b/Domain/Enums/Kartenfarbe.java @@ -10,7 +10,13 @@ public enum Kartenfarbe { MENSCH("BLAU"), ELF("GRÜN"), ZWERG("ROT"), RIESE("GELG"); - private Kartenfarbe(String farbe) { - + private String farbe; + + Kartenfarbe(String farbe) { + this.farbe = farbe; + } + + public String getFarbe() { + return this.farbe; } } diff --git a/Domain/Spieler.java b/Domain/Spieler.java index c2d7efd..06855a4 100644 --- a/Domain/Spieler.java +++ b/Domain/Spieler.java @@ -6,6 +6,106 @@ written on: 05 / 10 / 2023 at: 23:48 */ package Domain; -public class Spieler { +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++; + + } }