Update DOMAIN.KARTEN #39
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Die HashMap besitzt alle Karten in sortierter Reihenfolge Die ArrayList wird
|
||||||
|
* durch Zufall erzeugt und gibt den Key der HashMap wieder. D.h.
|
||||||
|
*/
|
||||||
|
private HashMap<Integer, Karte> kartensortiert = new HashMap<>();
|
||||||
|
|
||||||
/*------------------------------------------*/
|
private HashMap<Integer, Karte> kartengemischt = new HashMap<>();
|
||||||
// Attribute jedes Objektes
|
|
||||||
/*------------------------------------------*/
|
|
||||||
private boolean[][] belegung = {
|
|
||||||
{ 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 },
|
|
||||||
{ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }
|
|
||||||
};
|
|
||||||
|
|
||||||
private Karte[] kartenStapel = new Karte[60];
|
|
||||||
|
|
||||||
/*------------------------------------------*/
|
|
||||||
// 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));
|
||||||
/*------------------------------------------*/
|
}
|
||||||
// statische Methoden
|
// Erstelle Narrenkarten
|
||||||
/*------------------------------------------*/
|
for (int i = 5; i <= 8; i++) {
|
||||||
|
kartensortiert.put(i, new Narrenkarte(i));
|
||||||
/*------------------------------------------*/
|
}
|
||||||
// Getter und Setter
|
// Erstelle Charakterkarten MENSCH
|
||||||
/*------------------------------------------*/
|
for (int i = 9; i <= 21; i++) {
|
||||||
|
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.MENSCH, i - 8));
|
||||||
/**
|
}
|
||||||
* Ausgabe des ersten Elements des Stapels.
|
// Erstelle Charakterkarten ELF
|
||||||
*
|
for (int i = 22; i <= 34; i++) {
|
||||||
* @return erstes Element
|
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.ELF, i - 21));
|
||||||
*/
|
}
|
||||||
public Karte getObersteKarte() {
|
// Erstelle Charakterkarten RIESE
|
||||||
return kartenStapel[0];
|
for (int i = 35; i <= 47; i++) {
|
||||||
}
|
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.RIESE, i - 34));
|
||||||
|
}
|
||||||
/**
|
// Erstelle Charakterkarten ZWERG
|
||||||
* Ausgabe der Stapelgroesse.
|
for (int i = 48; i <= 60; i++) {
|
||||||
*
|
kartensortiert.put(i, new Zahlenkarte(i, Kartenfarbe.ZWERG, i - 47));
|
||||||
* @return laenge des Kartenstapels-Arrays
|
|
||||||
*/
|
|
||||||
public int getAnzahlKarten() {
|
|
||||||
return kartenStapel.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------*/
|
|
||||||
// @Overrides
|
|
||||||
/*------------------------------------------*/
|
|
||||||
|
|
||||||
/*------------------------------------------*/
|
|
||||||
// öffentliche Methoden
|
|
||||||
/*------------------------------------------*/
|
|
||||||
|
|
||||||
public void mischen() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------*/
|
|
||||||
// Hilfsmethoden (privat)
|
|
||||||
/*------------------------------------------*/
|
|
||||||
|
|
||||||
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) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
// Statische Methoden
|
||||||
|
|
||||||
|
// Getter und Setter
|
||||||
|
public Karte getKartesortiert(Integer index) {
|
||||||
|
return kartensortiert.get(index);
|
||||||
|
}
|
||||||
|
// Overrides
|
||||||
|
|
||||||
|
// Public Methoden
|
||||||
|
/**
|
||||||
|
* Die Collection der HashMap 'kartensortiert'.
|
||||||
|
*
|
||||||
|
* @return Die Kartenreferenzen der HashMap.
|
||||||
|
*/
|
||||||
|
public Collection<Karte> getKartenstapelSortiert() {
|
||||||
|
return kartensortiert.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
public Collection<Karte> getKartenstapelGemischt() {
|
||||||
|
return kartengemischt.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 'kg' Eine Namensliste des gemischten Kartenstapel
|
||||||
|
*/
|
||||||
|
public HashMap<Integer, String> getStatusGemischt() {
|
||||||
|
HashMap<Integer, String> kg = new HashMap<>();
|
||||||
|
for (int i = 1; i <= 60; i++) {
|
||||||
|
kg.put(i, ((String) kartengemischt.get(i).toString()));
|
||||||
|
}
|
||||||
|
return kg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
* 'kartengemsicht' sind zwei HashMap. 'kartensortiert' beinhaltet alle
|
||||||
|
* Karten in einer initialisierten Reihenfolge. 'kartengemischt' wird
|
||||||
|
* durch die @code Random 'zufall' befüllt.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
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()) {
|
||||||
|
System.out.println(k.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue