diff --git a/Domain/Karten/Karte.java b/Domain/Karten/Karte.java index 0e5b203..afec64b 100644 --- a/Domain/Karten/Karte.java +++ b/Domain/Karten/Karte.java @@ -22,11 +22,11 @@ public abstract class Karte { } } // Statische Methoden - public static int getId_card() { + + // Getter und Setter + public int getId_card() { return id_card; } - // Getter und Setter - // @Overrides diff --git a/Domain/Karten/Magierkarte.java b/Domain/Karten/Magierkarte.java index d38f1c0..8fe656d 100644 --- a/Domain/Karten/Magierkarte.java +++ b/Domain/Karten/Magierkarte.java @@ -9,34 +9,34 @@ package Domain.Karten; public class Magierkarte extends Karte { // Statische Konstanten - private static String TRUMPF_NAME = "Zauberer"; + private static String KARTENNAME = "Zauberer"; // Statische Attribute // Attribute des Objekts - private String bezeichnung; + private String name; // Konstruktoren public Magierkarte() { super(); - setBezeichnung(TRUMPF_NAME); + setName(KARTENNAME); } // Statische Methoden // Getter und Setter - public void setBezeichnung(String bezeichnung) { - this.bezeichnung = bezeichnung; + public void setName(String name) { + this.name = name; } - public String getBezeichnung() { - return this.bezeichnung; + public String getName() { + return this.name; } // @Overrides @Override public String toString() { - return this.getBezeichnung(); + return this.getName(); } // Public Methoden diff --git a/Domain/Karten/Narrenkarte.java b/Domain/Karten/Narrenkarte.java index c55f29b..d8474a7 100644 --- a/Domain/Karten/Narrenkarte.java +++ b/Domain/Karten/Narrenkarte.java @@ -9,34 +9,34 @@ package Domain.Karten; public class Narrenkarte extends Karte { // Statische Konstanten - private static String TRUMPF_NAME = "Narr"; + private static String KARTENNAME = "Narr"; // Statische Attribute // Attribute des Objekts - private String bezeichnung; + private String name; // Konstruktoren public Narrenkarte() { super(); - setBezeichnung(TRUMPF_NAME); + setName(KARTENNAME); } // Statische Methoden // Getter und Setter - public void setBezeichnung(String bezeichnung) { - this.bezeichnung = bezeichnung; + public void setName(String name) { + this.name = name; } - public String getBezeichnung() { - return this.bezeichnung; + public String getName() { + return this.name; } // @Overrides @Override public String toString() { - return this.getBezeichnung(); + return this.getName(); } // Public Methoden diff --git a/Domain/Karten/Zahlenkarte.java b/Domain/Karten/Zahlenkarte.java index 621bb27..3acdf77 100644 --- a/Domain/Karten/Zahlenkarte.java +++ b/Domain/Karten/Zahlenkarte.java @@ -13,7 +13,7 @@ public class Zahlenkarte extends Karte { /*------------------------------------------*/ // statische Konstanten /*------------------------------------------*/ - + private final static String KARTENNAME = "Charakterkarte"; /*------------------------------------------*/ // statische Attribute(zB. zähler) /*------------------------------------------*/ @@ -23,6 +23,7 @@ public class Zahlenkarte extends Karte { /*------------------------------------------*/ private Kartenfarbe kartenfarbe; private int kartenNummer; + private String name; /*------------------------------------------*/ // Konstruktoren (default und spezifische) @@ -35,6 +36,7 @@ public class Zahlenkarte extends Karte { super(); setKartenfarbe(kartenfarbe); setKartenNummer(kartenNummer); + setName(KARTENNAME); } /*------------------------------------------*/ @@ -59,6 +61,12 @@ public class Zahlenkarte extends Karte { public int getKartenNummer() { return kartenNummer; } + public void setName(String name) { + this.name = name; + } + public String getName() { + return this.name; + } /*------------------------------------------*/ // @Overrides diff --git a/Domain/Kartenstapel.java b/Domain/Kartenstapel.java index 1851498..10f7258 100644 --- a/Domain/Kartenstapel.java +++ b/Domain/Kartenstapel.java @@ -6,32 +6,69 @@ written on: 05 / 10 / 2023 at: 23:42 */ package Domain; -import Domain.Karten.*; +import java.util.Collection; +import java.util.HashMap; + +import Domain.Enums.Kartenfarbe; +import Domain.Karten.Karte; +import Domain.Karten.Magierkarte; +import Domain.Karten.Narrenkarte; +import Domain.Karten.Zahlenkarte; public class Kartenstapel { /*------------------------------------------*/ // statische Konstanten /*------------------------------------------*/ - + /*------------------------------------------*/ // statische Attribute(zB. zähler) /*------------------------------------------*/ - + private static int kartenzähler = 1; /*------------------------------------------*/ // Attribute jedes Objektes /*------------------------------------------*/ - - private Karte[] kartenStapel = new Karte[60]; + /** + * Die beiden HashMaps repräsentieren das Kartendeck einmal + * sortiert und gemischt + */ + private HashMap kartensortiert = new HashMap<>(); + private HashMap kartengemischt = new HashMap<>(); /*------------------------------------------*/ // Konstruktoren (default und spezifische) /*------------------------------------------*/ - + + // Der Konstruktor PRIVATE? Weil darf nur von Spiel aufgerufen werden? + + /** + * Bei jedem Aufruf des Konstruktors wird die HashMap gelöscht und + * sortiert neu befüllt. + * Die tatsächliche Reihenfolge spielt keine Rolle, da die Karten selbst + * NUR über den KEY identifiziert werden. + */ public Kartenstapel() { - + kartensortiert.clear(); + // Erstelle Magierkarten + for (int i = 1; i <= 4; i++) { + kartensortiert.put(i, new Magierkarte()); + } + for (int i = 5; i <= 8; i++) { + kartensortiert.put(i, new Narrenkarte()); + } + for (int i = 9; i <= 21; i++) { + kartensortiert.put(i, new Zahlenkarte(Kartenfarbe.MENSCH, i)); + } + for (int i = 22; i <= 34; i++) { + kartensortiert.put(i, new Zahlenkarte(Kartenfarbe.ELF, i)); + } + for (int i = 35; i <= 47; i++) { + kartensortiert.put(i, new Zahlenkarte(Kartenfarbe.RIESE, i)); + } + for (int i = 48; i <= 60; i++) { + kartensortiert.put(i, new Zahlenkarte(Kartenfarbe.ZWERG, i)); + } } - /*------------------------------------------*/ // statische Methoden /*------------------------------------------*/ @@ -39,35 +76,37 @@ public class Kartenstapel { /*------------------------------------------*/ // Getter und Setter /*------------------------------------------*/ - - /** - * Ausgabe des ersten Elements des Stapels. - * - * @return erstes Element - */ - public Karte getObersteKarte() { - return kartenStapel[0]; - } - - /** - * Ausgabe der Stapelgroesse. - * - * @return laenge des Kartenstapels-Arrays - */ - public int getAnzahlKarten() { - return kartenStapel.length; - } - + /*------------------------------------------*/ // @Overrides /*------------------------------------------*/ - + /*------------------------------------------*/ // öffentliche Methoden /*------------------------------------------*/ - + + /** + * Die BEIDEN Collections dienen zu TESTZWECKEN + */ + public Collection getKartensortiert() { + return kartensortiert.values(); + } + public Collection getKartengemischt() { + return kartengemischt.values(); + } + + /** + * Methode: mischen() + * Eine ArrayList mit 60 Nummern wird erzeugt. + * Eine for-Schleife zieht jeweils eine Nummer. + * Diese wird aus 'kartensortiert' gezogen und + * in 'kartengemischt' einsortiert. + * Danach wird die Nummer aus der ArrayList gelöscht + * und es wird erneut eine Nummer aus den verblieben Zahlen + * gezogen. + */ public void mischen() { - + } /*------------------------------------------*/ diff --git a/Test/Domain/Karten/MagierkarteTest.java b/Test/Domain/Karten/MagierkarteTest.java index 38aec36..e6aeaed 100644 --- a/Test/Domain/Karten/MagierkarteTest.java +++ b/Test/Domain/Karten/MagierkarteTest.java @@ -29,14 +29,14 @@ public class MagierkarteTest { Magierkarte m4 = new Magierkarte(); - assertEquals("Zauberer", m1.getBezeichnung()); + assertEquals("Zauberer", m1.getName()); - assertEquals("Zauberer", m2.getBezeichnung()); + assertEquals("Zauberer", m2.getName()); - assertEquals("Zauberer", m3.getBezeichnung()); + assertEquals("Zauberer", m3.getName()); - assertEquals("Zauberer", m4.getBezeichnung()); + assertEquals("Zauberer", m4.getName()); assertEquals("Zauberer: MENSCH (BLAU).", m1.toString()); diff --git a/Test/Domain/Karten/NarrenkarteTest.java b/Test/Domain/Karten/NarrenkarteTest.java index 1810580..6a8d4c1 100644 --- a/Test/Domain/Karten/NarrenkarteTest.java +++ b/Test/Domain/Karten/NarrenkarteTest.java @@ -20,10 +20,10 @@ public class NarrenkarteTest { Narrenkarte n3 = new Narrenkarte(); Narrenkarte n4 = new Narrenkarte(); - assertEquals(n1.getBezeichnung(), "Narr"); - assertEquals(n2.getBezeichnung(), "Narr"); - assertEquals(n3.getBezeichnung(), "Narr"); - assertEquals(n4.getBezeichnung(), "Narr"); + assertEquals(n1.getName(), "Narr"); + assertEquals(n2.getName(), "Narr"); + assertEquals(n3.getName(), "Narr"); + assertEquals(n4.getName(), "Narr"); } }