Commit in PullRequest beachten #47

Open
2210892 wants to merge 1 commits from kts.des into main
8 changed files with 121 additions and 31 deletions

View File

@ -0,0 +1,8 @@
package Domain.Exceptions;
public class KartenNichtGemischtException extends SpielException {
public KartenNichtGemischtException(String e) {
super(30, e);
}
}

View File

@ -0,0 +1,16 @@
package Domain.Exceptions;
public class SpielNotFoundException extends SpielException {
public SpielNotFoundException() {
super();
}
public SpielNotFoundException(String e) {
super(20, e);
}
public SpielNotFoundException(int id, String e) {
super(id, e);
}
}

View File

@ -12,6 +12,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.HashMap; import java.util.HashMap;
import Domain.Enums.Kartenfarbe; import Domain.Enums.Kartenfarbe;
import Domain.Exceptions.KartenNichtGemischtException;
import Domain.Karten.*; import Domain.Karten.*;
@ -20,7 +21,7 @@ public class Kartenstapel {
// Statische Konstanten // Statische Konstanten
// Statische Attribute // Statische Attribute
private static int kartenzählen = 1;
// Attribute der Objekte // Attribute der Objekte
/** /**
@ -31,6 +32,7 @@ public class Kartenstapel {
private HashMap<Integer, Karte> kartengemischt = new HashMap<>(); private HashMap<Integer, Karte> kartengemischt = new HashMap<>();
// Konstruktoren // Konstruktoren
public Kartenstapel() { public Kartenstapel() {
kartensortiert.clear(); kartensortiert.clear();
@ -109,6 +111,7 @@ public class Kartenstapel {
* *
*/ */
public void mischen() { public void mischen() {
kartengemischt.clear();
ArrayList<Integer> zahlen = new ArrayList<>(); ArrayList<Integer> zahlen = new ArrayList<>();
for (int i = 1; i <= 60; i++) { for (int i = 1; i <= 60; i++) {
zahlen.add(i); zahlen.add(i);
@ -120,10 +123,6 @@ public class Kartenstapel {
kartengemischt.put(i + 1, kartensortiert.get(schlüsselzahl)); kartengemischt.put(i + 1, kartensortiert.get(schlüsselzahl));
zahlen.remove(index); zahlen.remove(index);
} }
for(Karte k : kartengemischt.values()) {
System.out.println(k.toString());
}
} }
/** /**
@ -131,11 +130,20 @@ public class Kartenstapel {
* an den Spieler verteilt, bzw. am Ende des Verteilens der Trumpf gezogen, * an den Spieler verteilt, bzw. am Ende des Verteilens der Trumpf gezogen,
* falls noch eine Karte auf dem Stapel liegen sollte. Hierzu wird die Runde, * falls noch eine Karte auf dem Stapel liegen sollte. Hierzu wird die Runde,
* als Ausgangswert genommen. * als Ausgangswert genommen.
* @return Immer die oberste Karte
* @throws KartenNichtGemischtException
*/ */
public Object getObersteKarte() { public Object getObersteKarte() throws KartenNichtGemischtException {
Object k = kartengemischt.values().toArray()[0]; if (!kartengemischt.isEmpty()) {
kartengemischt.remove(k); // Die Prüfung, dass NICHT MEHR als 60 Karten gezogen werden
return k; // geschieht in der Spiellogik
Object k = kartengemischt.values().toArray()[0];
kartengemischt.remove(k);
return k;
}
else {
throw new KartenNichtGemischtException("Der Kartenstapel wurde nicht gemischt.");
}
} }

View File

@ -7,10 +7,12 @@ written on: 05 / 10 / 2023 at: 23:48
package Domain; package Domain;
import Domain.Enums.Geschlecht; import Domain.Enums.Geschlecht;
import Domain.Exceptions.SpielNotFoundException;
import Facade.Spiel;
import java.io.Serializable; import java.io.Serializable;
public class Spieler extends Object implements Serializable { public class Spieler implements Serializable {
/*------------------------------------------*/ /*------------------------------------------*/
// statische Konstanten // statische Konstanten
@ -27,6 +29,7 @@ public class Spieler extends Object implements Serializable {
private String name; private String name;
private int vorhersage; private int vorhersage;
private Geschlecht geschlecht; private Geschlecht geschlecht;
private Spiel spielexsist;
// //
/*------------------------------------------*/ /*------------------------------------------*/
@ -35,20 +38,31 @@ public class Spieler extends Object implements Serializable {
// Default // Default
/** /**
* Default Konstruktor des Spieler - Klasse * Default Konstruktor des Spieler - Klasse
* @throws SpielNotFoundException
*/ */
public Spieler() { public Spieler() throws SpielNotFoundException {
} }
public Spieler(Spiel spiel) throws SpielNotFoundException {
if(spiel == null) {
throw new SpielNotFoundException("Es ist kein Spiel vorhanden.");
}
else {
setSpielexsist(spiel);
}
}
/** /**
* Konstruktor des Spieler - Klasse mit den Werten id, name und geschlecht * Konstruktor des Spieler - Klasse mit den Werten id, name und geschlecht
* *
* @param id int * @param id int
* @param name String * @param name String
* @param geschlecht Geschlecht * @param geschlecht Geschlecht
* @throws SpielNotFoundException
*/ */
public Spieler(int id, String name, Geschlecht geschlecht) { public Spieler(Spiel spiel, int id, String name, Geschlecht geschlecht) throws SpielNotFoundException {
this(); this(spiel);
if (id < 6) { if (id < 6) {
setId(id); setId(id);
} else { } else {
@ -72,9 +86,10 @@ public class Spieler extends Object implements Serializable {
* @param name String * @param name String
* @param geschlecht Geschlecht * @param geschlecht Geschlecht
* @param vorhersage int * @param vorhersage int
* @throws SpielNotFoundException
*/ */
public Spieler(int id, String name, Geschlecht geschlecht, int vorhersage) { public Spieler(Spiel spiel, int id, String name, Geschlecht geschlecht, int vorhersage) throws SpielNotFoundException {
this(id, name, geschlecht); this(spiel, id, name, geschlecht);
setVorhersage(vorhersage); setVorhersage(vorhersage);
} }
@ -85,6 +100,18 @@ public class Spieler extends Object implements Serializable {
/*------------------------------------------*/ /*------------------------------------------*/
// Getter und Setter // Getter und Setter
/*------------------------------------------*/ /*------------------------------------------*/
// spielexsist
/**
* Prüft und setzt Spiel als Ganzes.
* Nur dann dürfen Spieler erstellt werden
*
*/
private void setSpielexsist(Spiel spiel) {
this.spielexsist = spiel;
}
public Spiel getSpielexsist() {
return this.spielexsist;
}
// id // id
/** /**
* Setzt die ID des Spielers * Setzt die ID des Spielers
@ -187,4 +214,9 @@ public class Spieler extends Object implements Serializable {
// Hilfsmethoden (privat) // Hilfsmethoden (privat)
/*------------------------------------------*/ /*------------------------------------------*/
private boolean getSpielStatus() {
// TODO Auto-generated method stub
return false;
}
} }

View File

@ -15,6 +15,7 @@ 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.EmptyListException;
import Domain.Exceptions.SpielNotFoundException;
import Domain.Exceptions.SpielerNotFoundException; import Domain.Exceptions.SpielerNotFoundException;
import Domain.Karten.Karte; import Domain.Karten.Karte;
@ -57,6 +58,7 @@ public class Spiel implements Serializable {
this.spielerAmZug = null; this.spielerAmZug = null;
this.runde = 0; this.runde = 0;
this.kartenstapel = new Kartenstapel(); this.kartenstapel = new Kartenstapel();
}; };
/*--------------------------------------------------------*/ /*--------------------------------------------------------*/
// statische Methoden // statische Methoden
@ -122,13 +124,13 @@ public class Spiel implements Serializable {
// öffentliche Methodes // öffentliche Methodes
/*--------------------------------------------------------*/ /*--------------------------------------------------------*/
public void addSpieler(String name, Geschlecht geschlecht) { public void addSpieler(String name, Geschlecht geschlecht) throws SpielNotFoundException {
int id = 1; int id = 1;
while (id_check[id - 1]) { while (id_check[id - 1]) {
id++; id++;
} }
id_check[id - 1] = true; id_check[id - 1] = true;
Spieler temp = new Spieler(id, name, geschlecht); Spieler temp = new Spieler(this, 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) { if (this.spielerAmZug == null) {

View File

@ -4,11 +4,17 @@ import UI.SpielCLI;
import java.io.IOException; import java.io.IOException;
import Domain.Exceptions.SpielNotFoundException;
public class Main { public class Main {
public static void main(String[] args) {
public static void main(String[] args) throws SpielNotFoundException {
String name = "Wizard"; String name = "Wizard";
Spiel spiel = null; Spiel spiel = null;
if (Persistenz.sindDatenVorhanden(name)) { if (Persistenz.sindDatenVorhanden(name)) {
try { try {
System.out.println("Lade daten"); System.out.println("Lade daten");
@ -30,6 +36,7 @@ public class Main {
} else { } else {
spiel = new Spiel(); spiel = new Spiel();
} }
new SpielCLI(spiel); new SpielCLI(spiel);
@ -39,5 +46,8 @@ public class Main {
} catch (IOException e) { } catch (IOException e) {
System.out.println("Konnte Daten nicht speicher!"); System.out.println("Konnte Daten nicht speicher!");
} }
} }
} }

View File

@ -7,21 +7,33 @@ written on: 10 / 10 / 2023 at: 20:27
package Test.Domain; package Test.Domain;
import org.junit.Test; import org.junit.Test;
import org.junit.jupiter.api.BeforeAll;
import Domain.Spieler; import Domain.Spieler;
import Domain.Enums.Geschlecht; import Domain.Enums.Geschlecht;
import Domain.Exceptions.SpielNotFoundException;
import Facade.Spiel;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertThrows;
public class SpielerTest { public class SpielerTest {
Spieler spieler = new Spieler(0, "Herbert", Geschlecht.M, 0); Spieler spieler, spieler2, spieler3, spieler4, spieler5, spieler6;
Spieler spieler2 = new Spieler(1, "Heinz", Geschlecht.M, 0); Spiel spiel;
Spieler spieler3 = new Spieler(2, "Ulrike", Geschlecht.W, 0);
Spieler spieler4 = new Spieler(3, "HerrFrau", Geschlecht.D, 0); @BeforeAll
Spieler spieler5 = new Spieler(4, "", Geschlecht.KI, 0); public void immer() throws SpielNotFoundException {
Spieler spieler6 = new Spieler(5, "", Geschlecht.KI, 0); spiel = new Spiel();
spieler = new Spieler(spiel, 0, "Herbert", Geschlecht.M);
spieler2 = new Spieler(spiel, 1, "Heinz", Geschlecht.M);
spieler3 = new Spieler(spiel, 2, "Ulrike", Geschlecht.W);
spieler4 = new Spieler(spiel, 3, "HerrFrau", Geschlecht.D);
spieler5 = new Spieler(spiel, 4, "", Geschlecht.KI);
spieler6 = new Spieler(spiel, 5, "", Geschlecht.KI, 0);
}
@Test @Test
public void idTest() { public void idTest() {
@ -54,6 +66,7 @@ public class SpielerTest {
} }
@Test @Test
public void exceptionsTest() { public void exceptionsTest() {
assertThrows(RuntimeException.class, () -> new Spieler(6, "", Geschlecht.KI, 0));
assertThrows(RuntimeException.class, () -> new Spieler(spiel, 7, "Hugo", Geschlecht.M));
} }
} }

View File

@ -11,6 +11,7 @@ import Facade.Spiel;
import Domain.Spieler; import Domain.Spieler;
import Domain.Enums.Geschlecht; import Domain.Enums.Geschlecht;
import Domain.Exceptions.EmptyListException; import Domain.Exceptions.EmptyListException;
import Domain.Exceptions.SpielNotFoundException;
import Domain.Exceptions.SpielerNotFoundException; import Domain.Exceptions.SpielerNotFoundException;
import java.util.Scanner; import java.util.Scanner;
@ -25,12 +26,12 @@ public class SpielCLI {
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
private Spiel spiel; private Spiel spiel;
public SpielCLI(Spiel spiel) { public SpielCLI(Spiel spiel) throws SpielNotFoundException {
this.spiel = spiel; this.spiel = spiel;
hauptmenue(); hauptmenue();
} }
public void hauptmenue() { public void hauptmenue() throws SpielNotFoundException {
System.out.println("Hallo Wanderer"); System.out.println("Hallo Wanderer");
mainloop: while (true) { mainloop: while (true) {
print(""); print("");
@ -76,7 +77,7 @@ public class SpielCLI {
System.out.println("Noch nicht implementiert."); System.out.println("Noch nicht implementiert.");
} }
private void addSpieler() { private void addSpieler() throws SpielNotFoundException {
int spieler_anzahl = this.spiel.getAlleSpieler().length; int spieler_anzahl = this.spiel.getAlleSpieler().length;
if (spieler_anzahl <= 5) { if (spieler_anzahl <= 5) {
System.out.println("Gib den Namen des Spielers an"); System.out.println("Gib den Namen des Spielers an");