1
0
Fork 0

lokal merge; SpielCLI -> Spieler hinzufügen mit switch ob es genügend sind.

Philipp Kotte 2023-10-14 19:15:04 +02:00
commit 26add62098
9 changed files with 201 additions and 84 deletions

View File

@ -13,26 +13,23 @@ public class Magierkarte extends Karte {
// Statische Konstanten // Statische Konstanten
// Statische Attribute // Statische Attribute
private static int magierkartenanzahl = 0;
// Attribute des Objekts // Attribute des Objekts
private Kartenfarbe kartenfarbe; private Kartenfarbe kartenfarbe;
private String bezeichnung; private String bezeichnung;
private static int magierkartenanzahl = 0;
// Konstruktoren // Konstruktoren
public Magierkarte() { public Magierkarte() {
super(); super();
setMagierkartenanzahl(magierkartenanzahl);
} }
public Magierkarte(Kartenfarbe kartenfarbe, String bezeichnung) { public Magierkarte(Kartenfarbe kartenfarbe, String bezeichnung) {
super(); super();
if (magierkartenanzahl < 4) {
setMagierkartenanzahl(magierkartenanzahl);
setKartenfarbe(kartenfarbe); setKartenfarbe(kartenfarbe);
setBezeichnung(bezeichnung); setBezeichnung(bezeichnung);
} else {
throw new RuntimeException("Es darf nur vier Magier im Spiel geben.");
}
} }
// Statische Methoden // Statische Methoden

View File

@ -13,7 +13,7 @@ public class Narrenkarte extends Karte {
// Statische Konstanten // Statische Konstanten
// Statische Attribute // Statische Attribute
private static int narrenkarteanzahl = 0;
// Attribute des Objekts // Attribute des Objekts
private Kartenfarbe farbe; private Kartenfarbe farbe;
private String bezeichnung; private String bezeichnung;
@ -25,13 +25,9 @@ public class Narrenkarte extends Karte {
public Narrenkarte(Kartenfarbe farbe, String bezeichnung) { public Narrenkarte(Kartenfarbe farbe, String bezeichnung) {
super(); super();
if (narrenkarteanzahl < 4) {
setNarrenkarteanzahl(narrenkarteanzahl);
setFarbe(farbe); setFarbe(farbe);
setBezeichnung(bezeichnung); setBezeichnung(bezeichnung);
} else {
throw new RuntimeException("Es darf nur vier Narrenkarten geben.");
}
} }
// Statische Methoden // Statische Methoden

View File

@ -6,6 +6,8 @@ written on: 05 / 10 / 2023 at: 23:30
*/ */
package Domain.Karten; package Domain.Karten;
import Domain.Enums.Kartenfarbe;
public class Zahlenkarte extends Karte { public class Zahlenkarte extends Karte {
/*------------------------------------------*/ /*------------------------------------------*/
@ -19,17 +21,21 @@ public class Zahlenkarte extends Karte {
/*------------------------------------------*/ /*------------------------------------------*/
// Attribute jedes Objektes // Attribute jedes Objektes
/*------------------------------------------*/ /*------------------------------------------*/
private int wert; private Kartenfarbe farbe;
private int kartenNummer;
/*------------------------------------------*/ /*------------------------------------------*/
// Konstruktoren (default und spezifische) // Konstruktoren (default und spezifische)
/*------------------------------------------*/ /*------------------------------------------*/
public Zahlenkarte() { public Zahlenkarte() {
super();
} }
public Zahlenkarte(int wert) { public Zahlenkarte(Kartenfarbe farbe, int kartenNummer) {
setWert(wert); super();
setFarbe(farbe);
setKartenNummer(kartenNummer);
} }
/*------------------------------------------*/ /*------------------------------------------*/
// statische Methoden // statische Methoden
@ -38,24 +44,26 @@ public class Zahlenkarte extends Karte {
/*------------------------------------------*/ /*------------------------------------------*/
// Getter und Setter // Getter und Setter
/*------------------------------------------*/ /*------------------------------------------*/
public void setFarbe(Kartenfarbe farbe) {
public int getWert() { this.farbe = farbe;
return this.wert;
} }
public void setWert(int wert) { public Kartenfarbe getFarbe() {
this.wert = wert; return farbe;
}
public void setKartenNummer(int kartenNummer) {
this.kartenNummer = kartenNummer;
}
public int getKartenNummer() {
return kartenNummer;
} }
/*------------------------------------------*/ /*------------------------------------------*/
// @Overrides // @Overrides
/*------------------------------------------*/ /*------------------------------------------*/
@Override
public String toString() {
return "Zahlenkarte [Wert: " + getWert() + ", ID: " + this.getId() + " ]";
}
/*------------------------------------------*/ /*------------------------------------------*/
// öffentliche Methodes // öffentliche Methodes
/*------------------------------------------*/ /*------------------------------------------*/

View File

@ -109,7 +109,7 @@ public class Spieler implements Serializable {
* @return String name * @return String name
*/ */
public String getName() { public String getName() {
return name; return this.name;
} }
// geschlecht // geschlecht

View File

@ -79,8 +79,25 @@ public class Spiel implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "Runde: " + getRunde() + ", Gestartet : " + (istSpielGestartet() ? "Ja " : "Nein ") + ", Beendet: " String text = "\n";
+ (istSpielBeendet() ? "Ja" : "Nein") + ", Spieler am Zug: " + getSpielerAmZug()[0]; String header = "Systemausgabe--------------------------------\n";
String footer = "---------------------------------------------\n";
text += header;
text += "Runde: " + getRunde() + "\n";
text += "Gestartet : " + (istSpielGestartet() ? "Ja " : "Nein ") + "\n";
text += "Beendet: " + (istSpielBeendet() ? "Ja" : "Nein") + "\n";
text += "Spieler am Zug: "
+ (this.spielerAmZug == null ? "Noch keine Spieler vorhanden" : this.spielerAmZug.getName()) + "\n";
if (this.spieler.size() == 0) {
text += "Noch keine Spieler vorhanden \n";
} else {
for (int i = 0; i < this.spieler.size(); i++) {
text += "Spieler " + (i + 1) + ": " + this.spieler.get(i + 1).getName() + " ("
+ this.spieler.get(i + 1).getGeschlecht() + ")" + "\n";
}
}
text += footer;
return text;
} }
/*--------------------------------------------------------*/ /*--------------------------------------------------------*/
@ -92,8 +109,10 @@ public class Spiel implements Serializable {
while (id_check[id - 1]) { while (id_check[id - 1]) {
id++; id++;
} }
id_check[id - 1] = true;
Spieler temp = new Spieler(id, name, geschlecht); Spieler temp = new Spieler(id, name, geschlecht);
this.spieler.put(id, temp); this.spieler.put(id, temp);
System.out.println(this.spieler.get(id));
} }
public void removeSpieler(int id_spieler) { public void removeSpieler(int id_spieler) {

View File

@ -45,12 +45,4 @@ public class MagierkarteTest {
} }
public void magierAnzahl() {
Magierkarte m1 = new Magierkarte(Kartenfarbe.MENSCH, "Zauberer");
Magierkarte m2 = new Magierkarte(Kartenfarbe.ELF, "Zauberer");
Magierkarte m3 = new Magierkarte(Kartenfarbe.RIESE, "Zauberer");
Magierkarte m4 = new Magierkarte(Kartenfarbe.ZWERG, "Zauberer");
assertThrows(RuntimeException.class, () -> { Magierkarte m5 = new Magierkarte(Kartenfarbe.MENSCH, "Zauberer");});
}
} }

View File

@ -38,13 +38,4 @@ public class NarrenkarteTest {
assertEquals(Kartenfarbe.RIESE.getFarbe(), "GELB"); assertEquals(Kartenfarbe.RIESE.getFarbe(), "GELB");
assertEquals(Kartenfarbe.ZWERG.getFarbe(), "ROT"); assertEquals(Kartenfarbe.ZWERG.getFarbe(), "ROT");
} }
public void Narrenanzahl() {
Narrenkarte n1 = new Narrenkarte(Kartenfarbe.MENSCH, "Narr");
Narrenkarte n2 = new Narrenkarte(Kartenfarbe.ELF, "Narr");
Narrenkarte n3 = new Narrenkarte(Kartenfarbe.RIESE, "Narr");
Narrenkarte n4 = new Narrenkarte(Kartenfarbe.ZWERG, "Narr");
assertThrows(RuntimeException.class, () -> {Narrenkarte n5 = new Narrenkarte(Kartenfarbe.MENSCH, "Narr");});
}
} }

View File

@ -6,6 +6,90 @@ written on: 10 / 10 / 2023 at: 21:18
*/ */
package Test.Domain.Karten; package Test.Domain.Karten;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import org.junit.Test;
import Domain.Enums.Kartenfarbe;
import Domain.Karten.Zahlenkarte;
public class ZahlenkarteTest { public class ZahlenkarteTest {
/**
* Die Objekterzeugung der HashMap und der Zahlenkarten
* kann auch in ein @BeforeAll eingetragen werden.
*/
/**
* Der @Test erzeugt Zahlenkarten von 1 bis 13. prüft aber
* nur zwei Positionen in der HashMap, um die
* Objektdaten zu validieren.
*/
@Test
public void dreizehnZahlenkartenMENSCH() {
HashMap<Integer, Zahlenkarte> zm = new HashMap<Integer, Zahlenkarte>();
Zahlenkarte zahlenkarte = null;
for (int i = 1; i <= 13; i++) {
zahlenkarte = new Zahlenkarte(Kartenfarbe.MENSCH, i);
zm.put(i, zahlenkarte);
}
assertEquals(zm.get(7).getFarbe(), Kartenfarbe.MENSCH);
assertEquals(zm.get(7).getKartenNummer(), 7);
assertEquals(zm.get(4).getFarbe(), Kartenfarbe.MENSCH);
assertEquals(zm.get(4).getKartenNummer(), 4);
}
@Test
public void dreizehnZahlenkartenElf() {
HashMap<Integer, Zahlenkarte> ze = new HashMap<Integer, Zahlenkarte>();
Zahlenkarte zahlenkarte = null;
for (int i = 1; i <= 13; i++) {
zahlenkarte = new Zahlenkarte(Kartenfarbe.ELF, i);
ze.put(i, zahlenkarte);
}
assertEquals(ze.get(7).getFarbe(), Kartenfarbe.ELF);
assertEquals(ze.get(7).getKartenNummer(), 7);
assertEquals(ze.get(4).getFarbe(), Kartenfarbe.ELF);
assertEquals(ze.get(4).getKartenNummer(), 4);
}
@Test
public void dreizehnZahlenkartenZWERG() {
HashMap<Integer, Zahlenkarte> zz = new HashMap<Integer, Zahlenkarte>();
Zahlenkarte zahlenkarte = null;
for (int i = 1; i <= 13; i++) {
zahlenkarte = new Zahlenkarte(Kartenfarbe.ZWERG, i);
zz.put(i, zahlenkarte);
}
assertEquals(zz.get(7).getFarbe(), Kartenfarbe.ZWERG);
assertEquals(zz.get(7).getKartenNummer(), 7);
assertEquals(zz.get(4).getFarbe(), Kartenfarbe.ZWERG);
assertEquals(zz.get(4).getKartenNummer(), 4);
}
@Test
public void dreizehnZahlenkartenRIESE() {
HashMap<Integer, Zahlenkarte> zr = new HashMap<Integer, Zahlenkarte>();
Zahlenkarte zahlenkarte = null;
for (int i = 1; i <= 13; i++) {
zahlenkarte = new Zahlenkarte(Kartenfarbe.RIESE, i);
zr.put(i, zahlenkarte);
}
assertEquals(zr.get(9).getFarbe(), Kartenfarbe.RIESE);
assertEquals(zr.get(9).getKartenNummer(), 9);
assertEquals(zr.get(2).getFarbe(), Kartenfarbe.RIESE);
assertEquals(zr.get(2).getKartenNummer(), 2);
}
} }

View File

@ -8,6 +8,8 @@ written on: 05 / 10 / 2023 at: 23:25
package UI; package UI;
import Facade.Spiel; import Facade.Spiel;
import Domain.Spieler;
import Domain.Enums.Geschlecht;
import java.util.Scanner; import java.util.Scanner;
@ -22,13 +24,15 @@ public class SpielCLI {
} }
public void hauptmenue() { public void hauptmenue() {
mainloop: while (true) {
System.out.println("Hallo Wanderer"); System.out.println("Hallo Wanderer");
mainloop: while (true) {
System.out.println("");
System.out.println("Was sillst du tun"); System.out.println("Was sillst du tun");
System.out.println("--------Hauptmenü--------"); System.out.println("--------Hauptmenü--------");
System.out.println("-1- Spiel starten"); System.out.println("-1- Spiel starten");
System.out.println("-2- Spiel to String"); System.out.println("-2- Spieler hinzufügen");
System.out.println("-3- Exit"); System.out.println("-3- Spiel to String");
System.out.println("-4- Exit");
int input = 0; int input = 0;
@ -44,9 +48,35 @@ public class SpielCLI {
System.out.println("Noch nicht implementiert."); System.out.println("Noch nicht implementiert.");
break; break;
case 2: case 2:
System.out.println("Gib den Namen des Spielers an");
String name = sc.nextLine();
System.out.println("Gib das Geschlecht an.");
System.out.println("Männlich (M), Weiblich (W), Divers (D), KI (K)");
String geschlecht = sc.nextLine();
switch (geschlecht) {
case "W":
spiel.addSpieler(name, Geschlecht.W);
break;
case "M":
spiel.addSpieler(name, Geschlecht.M);
break;
case "D":
spiel.addSpieler(name, Geschlecht.D);
break;
case "K":
spiel.addSpieler(name, Geschlecht.KI);
break;
default:
System.out.println("Diese eingabe ist nicht gültig");
break;
}
break;
case 3:
System.out.println(spiel.toString()); System.out.println(spiel.toString());
break; break;
case 3: case 4:
break mainloop; break mainloop;
case 0: case 0:
System.out.println("Diese eingabe ist nicht vergeben."); System.out.println("Diese eingabe ist nicht vergeben.");