diff --git a/Domain/Enums/Kartenfarbe.java b/Domain/Enums/Kartenfarbe.java index 5a9f882..effb082 100644 --- a/Domain/Enums/Kartenfarbe.java +++ b/Domain/Enums/Kartenfarbe.java @@ -9,15 +9,20 @@ package Domain.Enums; public enum Kartenfarbe { MENSCH("BLAU"), ZWERG("ROT"), ELF("GRÜN"), RIESE("GELB"); - + private String farbe; - - private Kartenfarbe (String farbe) { + + private Kartenfarbe(String farbe) { this.farbe = farbe; } - + public String getFarbe() { return farbe; } + @Override + public String toString() { + return getFarbe(); + } + } diff --git a/Domain/Karten/Magierkarte.java b/Domain/Karten/Magierkarte.java index c0e7038..7725825 100644 --- a/Domain/Karten/Magierkarte.java +++ b/Domain/Karten/Magierkarte.java @@ -63,13 +63,13 @@ public class Magierkarte extends Karte { public int getMagierkartenanzahl() { return magierkartenanzahl; } - // @Overrides + // @Overrides @Override public String toString() { - return "Magierkarte [ID: " + this.getId() + " ]"; + return this.getBezeichnung() + ": " + this.getKartenfarbe().name() + " (" + this.getKartenfarbe().toString() + + ")."; } - // Public Methoden // Private Methoden diff --git a/Domain/Karten/Narrenkarte.java b/Domain/Karten/Narrenkarte.java index 7966383..154d31a 100644 --- a/Domain/Karten/Narrenkarte.java +++ b/Domain/Karten/Narrenkarte.java @@ -15,7 +15,7 @@ public class Narrenkarte extends Karte { // Statische Attribute // Attribute des Objekts - private Kartenfarbe farbe; + private Kartenfarbe kartenfarbe; private String bezeichnung; // Konstruktoren @@ -25,7 +25,7 @@ public class Narrenkarte extends Karte { public Narrenkarte(Kartenfarbe farbe, String bezeichnung) { super(); - setFarbe(farbe); + setKartenfarbe(farbe); setBezeichnung(bezeichnung); } @@ -36,12 +36,12 @@ public class Narrenkarte extends Karte { return this.getId(); } - public void setFarbe(Kartenfarbe farbe) { - this.farbe = farbe; + public void setKartenfarbe(Kartenfarbe farbe) { + this.kartenfarbe = farbe; } - public Kartenfarbe getFarbe() { - return this.farbe; + public Kartenfarbe getKartenfarbe() { + return this.kartenfarbe; } public void setBezeichnung(String bezeichnung) { @@ -55,13 +55,13 @@ public class Narrenkarte extends Karte { public void setNarrenkarteanzahl(int narrenkarteanzahl) { narrenkarteanzahl++; } - // @Overrides + // @Overrides @Override public String toString() { - return "Narrenkarte [ID: " + this.getId() + " ]"; + return this.getBezeichnung() + ": " + this.getKartenfarbe().name() + " (" + this.getKartenfarbe().toString() + + ")."; } - // Public Methoden // Private Methoden diff --git a/Domain/Karten/Zahlenkarte.java b/Domain/Karten/Zahlenkarte.java index e465474..91240bd 100644 --- a/Domain/Karten/Zahlenkarte.java +++ b/Domain/Karten/Zahlenkarte.java @@ -22,7 +22,7 @@ public class Zahlenkarte extends Karte { // Attribute jedes Objektes /*------------------------------------------*/ private Kartenfarbe farbe; - private int wert; + private int kartenNummer; /*------------------------------------------*/ // Konstruktoren (default und spezifische) @@ -31,10 +31,10 @@ public class Zahlenkarte extends Karte { super(); } - public Zahlenkarte(Kartenfarbe farbe, int wert) { + public Zahlenkarte(Kartenfarbe farbe, int kartenNummer) { super(); setFarbe(farbe); - setWert(wert); + setKartenNummer(kartenNummer); } /*------------------------------------------*/ @@ -52,12 +52,12 @@ public class Zahlenkarte extends Karte { return farbe; } - public void setWert(int kartenNummer) { - this.wert = kartenNummer; + public void setKartenNummer(int kartenNummer) { + this.kartenNummer = kartenNummer; } - public int getWert() { - return wert; + public int getKartenNummer() { + return kartenNummer; } /*------------------------------------------*/ @@ -72,4 +72,4 @@ public class Zahlenkarte extends Karte { // Hilfsmethoden (privat) /*------------------------------------------*/ -} +} \ No newline at end of file diff --git a/Domain/Spieler.java b/Domain/Spieler.java index c118989..972fe85 100644 --- a/Domain/Spieler.java +++ b/Domain/Spieler.java @@ -23,10 +23,11 @@ public class Spieler extends Object implements Serializable { /*------------------------------------------*/ // Attribute jedes Objektes /*------------------------------------------*/ - private int id; + private int id = 0; private String name; private int vorhersage; private Geschlecht geschlecht; + // /*------------------------------------------*/ // Konstruktoren (default und spezifische) @@ -48,8 +49,18 @@ public class Spieler extends Object implements Serializable { */ public Spieler(int id, String name, Geschlecht geschlecht) { this(); - setId(id); - setName(name); + if (id < 6) { + setId(id); + } else { + throw new RuntimeException("Es darf nur max 6 Spieler geben."); + } + if (geschlecht == Geschlecht.KI) { + setName(name); // Bei KI wird kein Name gesetzt. name = leerer String + } else if (name.length() > 2) { + setName(name); // Es wird geprüft, ob Name größer 2 Zeichen + } else { + throw new RuntimeException("Der Name muss länger als 2 Buchstaben sein."); + } setGeschlecht(geschlecht); } diff --git a/Domain/Stich.java b/Domain/Stich.java index 6259bc0..9f61878 100644 --- a/Domain/Stich.java +++ b/Domain/Stich.java @@ -21,17 +21,17 @@ public class Stich { // Attribute jedes Objektes /*------------------------------------------*/ private Karte[] karten; + private int[] spielerID; + private int kartenCount = 0; /*------------------------------------------*/ // Konstruktoren (default und spezifische) /*------------------------------------------*/ public Stich() { - } - public Stich(Karte[] karten) { - setKarten(karten); - + public Stich(int spielerAnzahl) { + setSpielerAnzahl(spielerAnzahl); } /*------------------------------------------*/ @@ -42,14 +42,21 @@ public class Stich { // Getter und Setter /*------------------------------------------*/ - public void setKarten(Karte[] karten) { - this.karten = karten; + public void setSpielerAnzahl(int spielerAnzahl) { + this.karten = new Karte[spielerAnzahl]; + this.spielerID = new int[spielerAnzahl]; } public Karte[] getKarten() { return this.karten; } + public void addKarte(int spielerID, Karte karte) { + this.karten[kartenCount] = karte; + this.spielerID[kartenCount] = spielerID; + kartenCount++; + } + /*------------------------------------------*/ // @Overrides /*------------------------------------------*/ diff --git a/Facade/Spiel.java b/Facade/Spiel.java index 772d080..70a8e31 100644 --- a/Facade/Spiel.java +++ b/Facade/Spiel.java @@ -42,6 +42,7 @@ public class Spiel implements Serializable { private Spieler spielerAmZug; private int runde; private HashMap spieler = new HashMap<>(); + private HashMap stiche = new HashMap<>(); private boolean[] id_check = { false, false, false, false, false, false }; private Kartenstapel kartenstapel; private Block block; @@ -164,31 +165,31 @@ public class Spiel implements Serializable { // sing genügend Spieler angelegt? if (this.spieler.size() >= 3 && this.spieler.size() <= 6) { this.istGestartet = true; + while (!this.istSpielBeendet()) { + System.out.println("Das Spiel wurde gestartet."); + + // Beginn der Runde + // Stiche erstellen + erstelleStiche(this.runde); + // Karten für jeden Spieler verteilen + + // While loop mit der länge der anzahl Stiche für die jeweilige Runde + + // Für jeden Durchgang des Loops wird der Stich ermittelt + + // Wer gewonnen hat wird dann der Stich zugeordnet + + // prüfen ob das Spiel zuende ist + + // Der Spieler der jetzt am Zug ist, ist der der den letzten Stich gewonne hat + + // Runde erhöhen + runde++; + } } else { System.out.println("Es fehlen " + (3 - this.spieler.size()) + " spieler"); } - while (!this.istSpielBeendet()) { - System.out.println("Das Spiel wurde gestartet."); - - // Beginn der Runde - // Stiche erstellen - erstelleStiche(this.runde); - // Karten verteilen - - // Runde erhöhen - runde++; - } - - // Die Karten sind verteilt - - // Für jeden Spieler Karten ausspielen und im Stich speichern - - // ermitteln welcher Spieler gewonnen hat - - // Stich beim Spieler speichern - - // Gameloop? } public String[] getSpielerAmZug() { @@ -242,8 +243,10 @@ public class Spiel implements Serializable { // Hilfsmethoden (privat) /*--------------------------------------------------------*/ - private Stich[] erstelleStiche(int runde) { - return new Stich[runde]; + private void erstelleStiche(int runde) { + for (int i = 0; i < runde; i++) { + this.stiche.put(i + 1, new Stich(this.spieler.size())); + } } private void ermittleGewinner(Stich stich) { diff --git a/RendomTest.java b/RendomTest.java index 127786c..d6603f1 100644 --- a/RendomTest.java +++ b/RendomTest.java @@ -8,10 +8,22 @@ written on: 20 / 10 / 2023 at: 08:26 import java.util.Random; public class RendomTest { - public static void main(String[] args) { - Random r = new Random(); - int high = 10; - int low = 1; - System.out.println(r.nextInt(high - low) + low); - } + + // ----------------------------- Spiel + // ausspiele(int Kartenid){ + // Karte temp = Spieler.getKarte(id) + // Stich.add(spielerAmZug.getId(), temp); + // } + + // ------------------------------Stich + // Trumpf: Mensch + // spielerID: [3, 4, 1, 2] + // Karten: [Zwerg 4, Magier, narr, Magie] + // + // wo sind magier, false, true + // Karte -> Karten[1] + // Spieler -> spielerID[1] + // + // private void add(int Spielerid, int Kartenid){} + // spieler } diff --git a/Test/Domain/Karten/MagierkarteTest.java b/Test/Domain/Karten/MagierkarteTest.java index bc2fe15..f8b9283 100644 --- a/Test/Domain/Karten/MagierkarteTest.java +++ b/Test/Domain/Karten/MagierkarteTest.java @@ -21,6 +21,14 @@ import org.junit.Test; import Domain.Enums.Kartenfarbe; import Domain.Karten.Magierkarte; +/** + * + * @author sellm + * @version + * + * + */ + public class MagierkarteTest { @Test @@ -43,6 +51,8 @@ public class MagierkarteTest { assertEquals("Zauberer", m4.getBezeichnung()); assertEquals("ROT", Kartenfarbe.ZWERG.getFarbe()); + assertEquals("Zauberer: MENSCH (BLAU).", m1.toString()); + } } diff --git a/Test/Domain/Karten/NarrenkarteTest.java b/Test/Domain/Karten/NarrenkarteTest.java index 3fd07e8..12f132c 100644 --- a/Test/Domain/Karten/NarrenkarteTest.java +++ b/Test/Domain/Karten/NarrenkarteTest.java @@ -23,10 +23,10 @@ public class NarrenkarteTest { Narrenkarte n3 = new Narrenkarte(Kartenfarbe.RIESE, "Narr"); Narrenkarte n4 = new Narrenkarte(Kartenfarbe.ZWERG, "Narr"); - assertEquals(n1.getFarbe(), Kartenfarbe.MENSCH); - assertEquals(n2.getFarbe(), Kartenfarbe.ELF); - assertEquals(n3.getFarbe(), Kartenfarbe.RIESE); - assertEquals(n4.getFarbe(), Kartenfarbe.ZWERG); + assertEquals(n1.getKartenfarbe(), Kartenfarbe.MENSCH); + assertEquals(n2.getKartenfarbe(), Kartenfarbe.ELF); + assertEquals(n3.getKartenfarbe(), Kartenfarbe.RIESE); + assertEquals(n4.getKartenfarbe(), Kartenfarbe.ZWERG); assertEquals(n1.getBezeichnung(), "Narr"); assertEquals(n2.getBezeichnung(), "Narr"); diff --git a/Test/Domain/Karten/ZahlenkarteTest.java b/Test/Domain/Karten/ZahlenkarteTest.java index b718829..2671a5e 100644 --- a/Test/Domain/Karten/ZahlenkarteTest.java +++ b/Test/Domain/Karten/ZahlenkarteTest.java @@ -37,11 +37,11 @@ public class ZahlenkarteTest { zm.put(i, zahlenkarte); } - assertEquals(zm.get(7).getFarbe(), Kartenfarbe.MENSCH); - assertEquals(zm.get(7).getWert(), 7); + assertEquals(zm.get(7).getKartenfarbe(), Kartenfarbe.MENSCH); + assertEquals(zm.get(7).getKartenNummer(), 7); - assertEquals(zm.get(4).getFarbe(), Kartenfarbe.MENSCH); - assertEquals(zm.get(4).getWert(), 4); + assertEquals(zm.get(4).getKartenfarbe(), Kartenfarbe.MENSCH); + assertEquals(zm.get(4).getKartenNummer(), 4); } @Test @@ -53,11 +53,11 @@ public class ZahlenkarteTest { ze.put(i, zahlenkarte); } - assertEquals(ze.get(7).getFarbe(), Kartenfarbe.ELF); - assertEquals(ze.get(7).getWert(), 7); + assertEquals(ze.get(7).getKartenfarbe(), Kartenfarbe.ELF); + assertEquals(ze.get(7).getKartenNummer(), 7); - assertEquals(ze.get(4).getFarbe(), Kartenfarbe.ELF); - assertEquals(ze.get(4).getWert(), 4); + assertEquals(ze.get(4).getKartenfarbe(), Kartenfarbe.ELF); + assertEquals(ze.get(4).getKartenNummer(), 4); } @Test @@ -69,11 +69,11 @@ public class ZahlenkarteTest { zz.put(i, zahlenkarte); } - assertEquals(zz.get(7).getFarbe(), Kartenfarbe.ZWERG); - assertEquals(zz.get(7).getWert(), 7); + assertEquals(zz.get(7).getKartenfarbe(), Kartenfarbe.ZWERG); + assertEquals(zz.get(7).getKartenNummer(), 7); - assertEquals(zz.get(4).getFarbe(), Kartenfarbe.ZWERG); - assertEquals(zz.get(4).getWert(), 4); + assertEquals(zz.get(4).getKartenfarbe(), Kartenfarbe.ZWERG); + assertEquals(zz.get(4).getKartenNummer(), 4); } @@ -86,10 +86,10 @@ public class ZahlenkarteTest { zr.put(i, zahlenkarte); } - assertEquals(zr.get(9).getFarbe(), Kartenfarbe.RIESE); - assertEquals(zr.get(9).getWert(), 9); + assertEquals(zr.get(9).getKartenfarbe(), Kartenfarbe.RIESE); + assertEquals(zr.get(9).getKartenNummer(), 9); - assertEquals(zr.get(2).getFarbe(), Kartenfarbe.RIESE); - assertEquals(zr.get(2).getWert(), 2); + assertEquals(zr.get(2).getKartenfarbe(), Kartenfarbe.RIESE); + assertEquals(zr.get(2).getKartenNummer(), 2); } } diff --git a/Test/Domain/SpielerTest.java b/Test/Domain/SpielerTest.java index d346317..ee93bde 100644 --- a/Test/Domain/SpielerTest.java +++ b/Test/Domain/SpielerTest.java @@ -12,18 +12,25 @@ import Domain.Spieler; import Domain.Enums.Geschlecht; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; public class SpielerTest { Spieler spieler = new Spieler(0, "Herbert", Geschlecht.M, 0); Spieler spieler2 = new Spieler(1, "Heinz", Geschlecht.M, 0); Spieler spieler3 = new Spieler(2, "Ulrike", Geschlecht.W, 0); + Spieler spieler4 = new Spieler(3, "HerrFrau", Geschlecht.D, 0); + Spieler spieler5 = new Spieler(4, "", Geschlecht.KI, 0); + Spieler spieler6 = new Spieler(5, "", Geschlecht.KI, 0); @Test public void idTest() { assertEquals(0, spieler.getId()); assertEquals(1, spieler2.getId()); assertEquals(2, spieler3.getId()); + assertEquals(3, spieler4.getId()); + assertEquals(4, spieler5.getId()); + assertEquals(5, spieler6.getId()); } @Test @@ -42,6 +49,11 @@ public class SpielerTest { assertEquals("Herbert", spieler.getName()); spieler.setName("Heinz"); assertEquals("Heinz", spieler.getName()); + assertEquals("", spieler5.getName()); //Kein Name notwendig, da KI. } + @Test + public void exceptionsTest() { + assertThrows(RuntimeException.class, () -> new Spieler(6, "", Geschlecht.KI, 0)); + } } diff --git a/UI/SpielCLI.java b/UI/SpielCLI.java index c40479c..6123a62 100644 --- a/UI/SpielCLI.java +++ b/UI/SpielCLI.java @@ -121,10 +121,13 @@ public class SpielCLI { } int _id = Integer.parseInt(sc.nextLine()); - System.out.println(_id); + // System.out.println(_id); for (String s : spieler) { if (s.contains("ID: " + _id)) { System.out.println("Sicher das du " + s + " löschen willst?"); + } else { + System.out.println("Diese Spieler ist nicht vorhanden!"); + _id = 0; } } boolean valid_choice = false;