Update DOMAIN.KARTEN #39

Merged
2211945 merged 1 commits from kts.bib into main 2023-10-26 13:54:53 +02:00
4 changed files with 152 additions and 157 deletions

View File

@ -11,24 +11,18 @@ import Domain.Enums.Kartenfarbe;
public class Magierkarte extends Karte { public class Magierkarte extends Karte {
// Statische Konstanten // Statische Konstanten
private final static String NAME = "Zauberer";
// Statische Attribute // Statische Attribute
// Attribute des Objekts // Attribute des Objekts
private Kartenfarbe kartenfarbe;
private String bezeichnung; private String name;
private static int magierkartenanzahl = 0;
// Konstruktoren // Konstruktoren
public Magierkarte(int id) { public Magierkarte(int id) {
super(id); super(id);
setName();
}
public Magierkarte(Kartenfarbe kartenfarbe, String bezeichnung) {
super();
setKartenfarbe(kartenfarbe);
setBezeichnung(bezeichnung);
} }
@ -36,39 +30,23 @@ public class Magierkarte extends Karte {
// Getter und Setter // Getter und Setter
public void setKartenfarbe(Kartenfarbe kartenfarbe) {
this.kartenfarbe = kartenfarbe;
}
public Kartenfarbe getKartenfarbe() {
return this.kartenfarbe;
}
public int getId() { public int getId() {
return this.getId(); return super.getId();
} }
public void setBezeichnung(String bezeichnung) { private void setName() {
this.bezeichnung = bezeichnung; this.name = NAME;
} }
public String getBezeichnung() { public String getName() {
return this.bezeichnung; return this.name;
} }
public void setMagierkartenanzahl(int magierkartenanzahl) {
magierkartenanzahl++;
}
public int getMagierkartenanzahl() {
return magierkartenanzahl;
}
// @Overrides // @Overrides
@Override @Override
public String toString() { public String toString() {
return this.getBezeichnung() + ": " + this.getKartenfarbe().name() + " (" + this.getKartenfarbe().toString() return "ID " + this.getId() + ": " + this.getName();
+ ").";
} }
// Public Methoden // Public Methoden

View File

@ -11,45 +11,33 @@ import Domain.Enums.Kartenfarbe;
public class Narrenkarte extends Karte { public class Narrenkarte extends Karte {
// Statische Konstanten // Statische Konstanten
private final static String NAME = "Narr";
// Statische Attribute // Statische Attribute
// Attribute des Objekts // Attribute des Objekts
private Kartenfarbe kartenfarbe;
private String bezeichnung; private String name;
// Konstruktoren // Konstruktoren
public Narrenkarte(int id) { public Narrenkarte(int id) {
super(id); super(id);
} setName();
public Narrenkarte(Kartenfarbe farbe, String bezeichnung) {
super();
setKartenfarbe(farbe);
setBezeichnung(bezeichnung);
} }
// Statische Methoden // Statische Methoden
// Getter und Setter // Getter und Setter
public int getId() { public int getId() {
return this.getId(); return super.getId();
} }
public void setKartenfarbe(Kartenfarbe farbe) { private void setName() {
this.kartenfarbe = farbe; this.name = NAME;
} }
public Kartenfarbe getKartenfarbe() { public String getName() {
return this.kartenfarbe; return this.name;
}
public void setBezeichnung(String bezeichnung) {
this.bezeichnung = bezeichnung;
}
public String getBezeichnung() {
return this.bezeichnung;
} }
public void setNarrenkarteanzahl(int narrenkarteanzahl) { public void setNarrenkarteanzahl(int narrenkarteanzahl) {
@ -59,8 +47,7 @@ public class Narrenkarte extends Karte {
// @Overrides // @Overrides
@Override @Override
public String toString() { public String toString() {
return this.getBezeichnung() + ": " + this.getKartenfarbe().name() + " (" + this.getKartenfarbe().toString() return "ID " + this.getId() + ": " + this.getName();
+ ").";
} }
// Public Methoden // Public Methoden

View File

@ -27,12 +27,12 @@ public class Zahlenkarte extends Karte {
/*------------------------------------------*/ /*------------------------------------------*/
// Konstruktoren (default und spezifische) // Konstruktoren (default und spezifische)
/*------------------------------------------*/ /*------------------------------------------*/
public Zahlenkarte() { public Zahlenkarte(int id) {
super(); super(id);
} }
public Zahlenkarte(Kartenfarbe farbe, int kartenNummer) { public Zahlenkarte(int id, Kartenfarbe farbe, int kartenNummer) {
super(); super(id);
setFarbe(farbe); setFarbe(farbe);
setKartenNummer(kartenNummer); setKartenNummer(kartenNummer);
@ -44,6 +44,11 @@ public class Zahlenkarte extends Karte {
/*------------------------------------------*/ /*------------------------------------------*/
// Getter und Setter // Getter und Setter
/*------------------------------------------*/ /*------------------------------------------*/
public int getId() {
return super.getId();
}
public void setFarbe(Kartenfarbe farbe) { public void setFarbe(Kartenfarbe farbe) {
this.farbe = farbe; this.farbe = farbe;
} }

View File

@ -7,116 +7,141 @@ written on: 05 / 10 / 2023 at: 23:42
package Domain; package Domain;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.HashMap;
import Domain.Enums.Kartenfarbe; import Domain.Enums.Kartenfarbe;
import Domain.Karten.*; import Domain.Karten.*;
public class Kartenstapel { public class Kartenstapel {
/*------------------------------------------*/ // Statische Konstanten
// statische Konstanten
/*------------------------------------------*/
/*------------------------------------------*/ // Statische Attribute
// statische Attribute(zB. zähler) private static int kartenzählen = 1;
/*------------------------------------------*/ // Attribute der Objekte
/*------------------------------------------*/ /**
// Attribute jedes Objektes * Die HashMap besitzt alle Karten in sortierter Reihenfolge Die ArrayList wird
/*------------------------------------------*/ * durch Zufall erzeugt und gibt den Key der HashMap wieder. D.h.
private boolean[][] belegung = { */
{ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }, private HashMap<Integer, Karte> kartensortiert = new HashMap<>();
{ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false },
{ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false },
{ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }
};
private Karte[] kartenStapel = new Karte[60]; private HashMap<Integer, Karte> kartengemischt = new HashMap<>();
/*------------------------------------------*/
// Konstruktoren (default und spezifische)
/*------------------------------------------*/
// Konstruktoren
public Kartenstapel() { public Kartenstapel() {
mischen(); kartensortiert.clear();
// Erstelle Magierkarten
for (int i = 1; i <= 4; i++) {
kartensortiert.put(i, new Magierkarte(i));
}
// Erstelle Narrenkarten
for (int i = 5; i <= 8; i++) {
kartensortiert.put(i, new Narrenkarte(i));
}
// Erstelle Charakterkarten MENSCH
for (int i = 9; i <= 21; i++) {
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.MENSCH, i - 8));
}
// Erstelle Charakterkarten ELF
for (int i = 22; i <= 34; i++) {
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.ELF, i - 21));
}
// Erstelle Charakterkarten RIESE
for (int i = 35; i <= 47; i++) {
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.RIESE, i - 34));
}
// Erstelle Charakterkarten ZWERG
for (int i = 48; i <= 60; i++) {
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.ZWERG, i - 47));
} }
/*------------------------------------------*/
// statische Methoden
/*------------------------------------------*/
/*------------------------------------------*/ }
// Statische Methoden
// Getter und Setter // Getter und Setter
/*------------------------------------------*/ public Karte getKartesortiert(Integer index) {
return kartensortiert.get(index);
}
// Overrides
// Public Methoden
/** /**
* Ausgabe des ersten Elements des Stapels. * Die Collection der HashMap 'kartensortiert'.
* *
* @return erstes Element * @return Die Kartenreferenzen der HashMap.
*/ */
public Karte getObersteKarte() { public Collection<Karte> getKartenstapelSortiert() {
return kartenStapel[0]; return kartensortiert.values();
}
public Collection<Karte> getKartenstapelGemischt() {
return kartengemischt.values();
} }
/** /**
* Ausgabe der Stapelgroesse. * Methode für die Testklasse KartenstapelTest, um die Sortierung Visuell zu
* bestätigen. Kann nach Finalem Test und Freigabe gelöscht oder auskommentiert
* werden.
* *
* @return laenge des Kartenstapels-Arrays * @return 'kg' Eine Namensliste des gemischten Kartenstapel
*/ */
public int getAnzahlKarten() { public HashMap<Integer, String> getStatusGemischt() {
return kartenStapel.length; HashMap<Integer, String> kg = new HashMap<>();
for (int i = 1; i <= 60; i++) {
kg.put(i, ((String) kartengemischt.get(i).toString()));
}
return kg;
} }
/*------------------------------------------*/ /**
// @Overrides * Methode mischen(): beinhaltet eine ArrayList 'zahlen' die Zahlenwerte von 1
/*------------------------------------------*/ * bis 60 zur Verfügung stellt.
*
/*------------------------------------------*/ * @code Mit Random wird ein Zufallsindex gewählt. 'kartensortiert' und
// öffentliche Methoden * 'kartengemsicht' sind zwei HashMap. 'kartensortiert' beinhaltet alle
/*------------------------------------------*/ * Karten in einer initialisierten Reihenfolge. 'kartengemischt' wird
* durch die @code Random 'zufall' befüllt.
*
*/
public void mischen() { public void mischen() {
ArrayList<Integer> zahlen = new ArrayList<>();
for (int i = 1; i <= 60; i++) {
zahlen.add(i);
}
Random zufall = new Random();
for (int i = 0; i < 60; i++) {
int index = zufall.nextInt(zahlen.size());
int schlüsselzahl = zahlen.get(index);
kartengemischt.put(i + 1, kartensortiert.get(schlüsselzahl));
zahlen.remove(index);
} }
/*------------------------------------------*/ for(Karte k : kartengemischt.values()) {
// Hilfsmethoden (privat) System.out.println(k.toString());
/*------------------------------------------*/
private void Kartenverteilung() {
Random r = new Random();
List<Karte> karten = new ArrayList<>();
while (karten.size() < 60) {
int high = 4;
int low = 1;
int ultra_high = 15;
int x = r.nextInt(high - low) + low;
int y = r.nextInt(ultra_high - low) + low;
if (!belegung[x - 1][y - 1]) {
if (y == 1) {
karten.add(new Narrenkarte(x * y));
} else if (y == 15) {
karten.add(new Magierkarte(x * y));
} else {
if (x == 1) {
karten.add(new Zahlenkarte(Kartenfarbe.ZWERG, y));
} else if (x == 2) {
} else if (x == 3) {
} else if (x == 4) {
}
}
} }
} }
/**
* Methode getObersteKarte(): Hier wird der Reihe nach die jeweils oberste Karte
* 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,
* als Ausgangswert genommen.
*/
public Object getObersteKarte() {
Object k = kartengemischt.values().toArray()[0];
kartengemischt.remove(k);
return k;
} }
//
/**
*
*/
// Private Methoden
} }