1
0
Fork 0
WIZARD_PR2_DOP22/Domain/Spieler.java

120 lines
3.0 KiB
Java
Raw Normal View History

/*
============================================================
This is the "Spieler" file from Author: Philipp Kotte
written on: 05 / 10 / 2023 at: 23:48
============================================================
*/
package Domain;
2023-10-23 13:46:43 +02:00
import java.io.Serializable;
2023-10-23 13:46:43 +02:00
import Domain.Enums.Geschlecht;
public class Spieler implements Serializable{
// Statische Konstanten
2023-10-26 09:03:09 +02:00
private final static String BOTNAME = "Spieler (KI): "; // KI erhält einen konstanten Namen + id(zähler)
2023-10-23 13:46:43 +02:00
// Statische Attribute
2023-10-26 09:03:09 +02:00
private static int id = 1; // Interner Zähler für Prüfung max Spieler und für Name KI(BOTNAME + id)
2023-10-23 13:46:43 +02:00
// 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;
2023-10-26 09:03:09 +02:00
private Hand hand;
2023-10-23 13:46:43 +02:00
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.
2023-10-26 09:03:09 +02:00
* @param geschlecht wird übergeben, als MinAnforderung
2023-10-23 13:46:43 +02:00
*/
public Spieler(Geschlecht geschlecht) {
if (id <= 6) {
if (geschlecht != Geschlecht.KI) {
setGeschlecht(geschlecht);
setVorhersage(0);
2023-10-26 09:03:09 +02:00
setHand(0);
2023-10-23 13:46:43 +02:00
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;
}
2023-10-26 09:03:09 +02:00
public void setHand(int runde) {
this.hand = new Hand(runde);
}
public Hand getHand() {
return this.hand;
}
2023-10-23 13:46:43 +02:00
// Overrides
// Public Methoden
// Private Methoden
private void setNeuerBot(Geschlecht geschlecht) {
this.spielerID = id;
2023-10-26 09:03:09 +02:00
this.name = BOTNAME + " " + id;
2023-10-23 13:46:43 +02:00
this.geschlecht = geschlecht;
2023-10-26 09:03:09 +02:00
setVorhersage(0); // Nicht zwingend notwendig, aber dient
setHand(0); // der Übersicht aller Attribute.
2023-10-23 13:46:43 +02:00
setId();
}
private void setId() {
id++;
}
}