Compare commits
2 Commits
testSpiele
...
main
Author | SHA1 | Date |
---|---|---|
hummel | 13440e4437 | |
hummel | cdee044dd1 |
|
@ -0,0 +1,3 @@
|
||||||
|
/bin/
|
||||||
|
/.classpath
|
||||||
|
/.project
|
|
@ -3,41 +3,47 @@ package de.hs_mannheim.informatik.games.kniffel.domain;
|
||||||
public class Gewinnkarte {
|
public class Gewinnkarte {
|
||||||
private Kategorie[] kategorien;
|
private Kategorie[] kategorien;
|
||||||
private final int KATEGORIE_ANZAHL = 6;
|
private final int KATEGORIE_ANZAHL = 6;
|
||||||
|
private int summe;
|
||||||
|
|
||||||
public Gewinnkarte() {
|
public Gewinnkarte() {
|
||||||
kategorien = new Kategorie[KATEGORIE_ANZAHL];
|
kategorien = new Kategorie[KATEGORIE_ANZAHL];
|
||||||
|
summe = 0;
|
||||||
|
|
||||||
for (int i = 1; i <= kategorien.length; i++) {
|
for (int i = 1; i <= kategorien.length; i++) {
|
||||||
kategorien[i-1] = new Kategorie(i);
|
kategorien[i-1] = new Kategorie(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean punkteEintragen(int kategorie, Würfel[] würfel) {
|
public boolean punkteEintragen(int kategorie, Würfel[] würfel) {
|
||||||
if (!kategorien[kategorie].isOffen())
|
if (!kategorien[kategorie].isOffen())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
kategorien[kategorie].punkteEintragen(würfel);
|
summe+= kategorien[kategorie].punkteEintragen(würfel);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
int i = 1;
|
int i = 1;
|
||||||
for (Kategorie k : kategorien) {
|
for (Kategorie k : kategorien) {
|
||||||
sb.append(String.format("%2d. %s: ", i++, k.getName()));
|
sb.append(String.format("%2d. %s: ", i++, k.getName()));
|
||||||
|
|
||||||
if (k.isOffen())
|
if (k.isOffen())
|
||||||
sb.append("offen");
|
sb.append("offen");
|
||||||
else
|
else
|
||||||
sb.append(k.getPunkte());
|
sb.append(k.getPunkte());
|
||||||
|
|
||||||
if (i <= kategorien.length)
|
sb.append(System.lineSeparator());
|
||||||
sb.append(System.lineSeparator());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sb.append(String.format("Summe: %3d Punkte", summe));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getKategorieAnzahl() {
|
||||||
|
return KATEGORIE_ANZAHL;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package de.hs_mannheim.informatik.games.kniffel.domain;
|
package de.hs_mannheim.informatik.games.kniffel.domain;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class Spiel {
|
public class Spiel {
|
||||||
private Spieler[] spieler;
|
private Spieler[] spieler;
|
||||||
private int spieleranzahl;
|
private int spieleranzahl;
|
||||||
private int aktuellerSpieler;
|
private int aktuellerSpieler;
|
||||||
private Würfelbecher becher;
|
private Würfelbecher becher;
|
||||||
|
private int rundenzähler;
|
||||||
|
private int spielerzähler;
|
||||||
|
|
||||||
public Spiel(List<String> spielernamen) {
|
public Spiel(ArrayList<String> spielernamen) {
|
||||||
spieleranzahl = spielernamen.size();
|
spieleranzahl = spielernamen.size();
|
||||||
spieler = new Spieler[spieleranzahl];
|
spieler = new Spieler[spieleranzahl];
|
||||||
|
|
||||||
|
@ -17,13 +19,15 @@ public class Spiel {
|
||||||
}
|
}
|
||||||
|
|
||||||
aktuellerSpieler = (int)(Math.random() * spieleranzahl);
|
aktuellerSpieler = (int)(Math.random() * spieleranzahl);
|
||||||
|
rundenzähler = 1;
|
||||||
|
spielerzähler = 1;
|
||||||
|
|
||||||
becher = new Würfelbecher();
|
becher = new Würfelbecher();
|
||||||
becher.würfle();
|
becher.würfle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getGewinnkartentextAktuellerSpieler() {
|
public Gewinnkarte getGewinnkarteAktuellerSpieler() {
|
||||||
return spieler[aktuellerSpieler].getGewinnkarte().toString();
|
return spieler[aktuellerSpieler].getGewinnkarte();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNameAktuellerSpieler() {
|
public String getNameAktuellerSpieler() {
|
||||||
|
@ -42,5 +46,16 @@ public class Spiel {
|
||||||
public boolean punkteEintragen(int kategorie) {
|
public boolean punkteEintragen(int kategorie) {
|
||||||
return spieler[aktuellerSpieler].getGewinnkarte().punkteEintragen(kategorie - 1, becher.getWürfel());
|
return spieler[aktuellerSpieler].getGewinnkarte().punkteEintragen(kategorie - 1, becher.getWürfel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean nächsterSpieler() {
|
||||||
|
aktuellerSpieler = ++aktuellerSpieler % spieleranzahl;
|
||||||
|
|
||||||
|
if (++spielerzähler > spieleranzahl) {
|
||||||
|
++rundenzähler;
|
||||||
|
spielerzähler = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rundenzähler <= spieler[aktuellerSpieler].getGewinnkarte().getKategorieAnzahl();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,13 +13,8 @@ public class Würfel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int würfle() {
|
public int würfle() {
|
||||||
var a = 1;
|
|
||||||
augen = 1 + (int)(Math.random() * SEITEN);
|
augen = 1 + (int)(Math.random() * SEITEN);
|
||||||
|
|
||||||
// try this with Coverage as
|
|
||||||
if (augen == 6 && a >= 1);
|
|
||||||
System.out.println("Los für MÄDN!");
|
|
||||||
|
|
||||||
return augen;
|
return augen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,28 +6,15 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
class WürfelTest {
|
class WürfelTest {
|
||||||
private Würfel w;
|
|
||||||
|
|
||||||
@BeforeAll
|
|
||||||
static void initialisiere() {
|
|
||||||
|
|
||||||
System.out.println("Einmal vor allem!");
|
|
||||||
}
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
void vorJedem() {
|
|
||||||
w = new Würfel();
|
|
||||||
System.out.println("Vor jedem!");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testWürfelEinsBisSechs() {
|
void testWürfelEinsBisSechs() {
|
||||||
|
Würfel w = new Würfel();
|
||||||
|
|
||||||
for (int i = 0; i < 1000; i++) {
|
for (int i = 0; i < 1000; i++) {
|
||||||
int augen = w.würfle();
|
int augen = w.würfle();
|
||||||
assertTrue(augen >= 1 && augen <= 6);
|
assertTrue(augen >= 1 && augen <= 6);
|
||||||
|
@ -36,7 +23,9 @@ class WürfelTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testVerteilung() {
|
void testAugenVerteilung() {
|
||||||
|
Würfel w = new Würfel();
|
||||||
|
|
||||||
Set<Integer> zahlen = new HashSet<>();
|
Set<Integer> zahlen = new HashSet<>();
|
||||||
|
|
||||||
for (int i = 0; i < 1000; i++) {
|
for (int i = 0; i < 1000; i++) {
|
||||||
|
|
|
@ -1,14 +1,35 @@
|
||||||
package de.hs_mannheim.informatik.games.kniffel.facade;
|
package de.hs_mannheim.informatik.games.kniffel.facade;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import de.hs_mannheim.informatik.games.kniffel.domain.Gewinnkarte;
|
||||||
import de.hs_mannheim.informatik.games.kniffel.domain.Spiel;
|
import de.hs_mannheim.informatik.games.kniffel.domain.Spiel;
|
||||||
|
|
||||||
public class KniffelApi {
|
public class KniffelApi {
|
||||||
|
private Spiel spiel;
|
||||||
public Spiel starteSpiel(List<String> spielernamen, boolean starWarsModus) {
|
|
||||||
|
public void starteSpiel(ArrayList<String> spielernamen, boolean starWarsModus) {
|
||||||
// TODO: StarWars über Vererbung einbauen?
|
// TODO: StarWars über Vererbung einbauen?
|
||||||
return new Spiel(spielernamen);
|
spiel = new Spiel(spielernamen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Gewinnkarte getGewinnkarte() {
|
||||||
|
return spiel.getGewinnkarteAktuellerSpieler();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNameAktuellerSpieler() {
|
||||||
|
return spiel.getNameAktuellerSpieler();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] wurfDurchführen(String... würfel) {
|
||||||
|
return spiel.wurfDurchführen(würfel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean punkteEintragen(int kategorie) {
|
||||||
|
return spiel.punkteEintragen(kategorie);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean nächsterSpieler() {
|
||||||
|
return spiel.nächsterSpieler();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,11 @@ package de.hs_mannheim.informatik.games.kniffel.tui;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
import de.hs_mannheim.informatik.games.kniffel.domain.Spiel;
|
|
||||||
import de.hs_mannheim.informatik.games.kniffel.facade.KniffelApi;
|
import de.hs_mannheim.informatik.games.kniffel.facade.KniffelApi;
|
||||||
|
|
||||||
public class SpielStart {
|
public class SpielStart {
|
||||||
private Scanner kb;
|
private Scanner kb;
|
||||||
private KniffelApi api;
|
private KniffelApi api;
|
||||||
private Spiel spiel;
|
|
||||||
|
|
||||||
public SpielStart(Scanner kb, KniffelApi api) {
|
public SpielStart(Scanner kb, KniffelApi api) {
|
||||||
this.kb = kb;
|
this.kb = kb;
|
||||||
|
@ -43,9 +41,9 @@ public class SpielStart {
|
||||||
|
|
||||||
String sw = kb.nextLine();
|
String sw = kb.nextLine();
|
||||||
|
|
||||||
spiel = api.starteSpiel(spielernamen, sw.toLowerCase().equals("j"));
|
api.starteSpiel(spielernamen, sw.toLowerCase().equals("j"));
|
||||||
|
|
||||||
new SpielrundeSpielen(kb, spiel).verarbeiteEingabe();
|
new SpielrundeSpielen(kb, api).verarbeiteEingabe();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,68 +2,75 @@ package de.hs_mannheim.informatik.games.kniffel.tui;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
import de.hs_mannheim.informatik.games.kniffel.domain.Spiel;
|
import de.hs_mannheim.informatik.games.kniffel.facade.KniffelApi;
|
||||||
|
|
||||||
public class SpielrundeSpielen {
|
public class SpielrundeSpielen {
|
||||||
private Scanner kb;
|
private Scanner kb;
|
||||||
private Spiel spiel;
|
private KniffelApi api;
|
||||||
|
|
||||||
public SpielrundeSpielen(Scanner kb, Spiel spiel) {
|
public SpielrundeSpielen(Scanner kb, KniffelApi api) {
|
||||||
this.kb = kb;
|
this.kb = kb;
|
||||||
this.spiel = spiel;
|
this.api = api;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void verarbeiteEingabe() {
|
public void verarbeiteEingabe() {
|
||||||
gewinnkarteAusgeben();
|
|
||||||
|
|
||||||
String[] zuWürfeln = new String[0];
|
|
||||||
|
|
||||||
for (int i = 1; i <= 3; i++) {
|
|
||||||
int[] würfelwerte = this.spiel.wurfDurchführen(zuWürfeln);
|
|
||||||
System.out.print(i + ". Wurf: ");
|
|
||||||
for (int w : würfelwerte) {
|
|
||||||
System.out.print(w + " ");
|
|
||||||
}
|
|
||||||
System.out.println();
|
|
||||||
System.out.println(" 1 2 3 4 5");
|
|
||||||
System.out.println();
|
|
||||||
|
|
||||||
if (i == 3)
|
|
||||||
break;
|
|
||||||
|
|
||||||
System.out.println("Welche Würfel sollen noch einmal geworfen werden? ");
|
|
||||||
System.out.println("Nr. des/der zu werfenden Würfel(s) durch Leerzeichen getrennt eingeben.");
|
|
||||||
System.out.println("Eine leere Eingabe, beendet das Würfeln.");
|
|
||||||
System.out.print("Eingabe: ");
|
|
||||||
|
|
||||||
String eingabe = kb.nextLine();
|
|
||||||
if (eingabe.isEmpty())
|
|
||||||
break;
|
|
||||||
|
|
||||||
zuWürfeln = eingabe.split(" ");
|
|
||||||
}
|
|
||||||
|
|
||||||
gewinnkarteAusgeben();
|
|
||||||
|
|
||||||
System.out.println("In welcher Kategorie sollen die Punkte eingetragen werden?");
|
|
||||||
do {
|
do {
|
||||||
System.out.print("> ");
|
System.out.print(">>>>>>>>>");
|
||||||
int kategorie= Integer.parseInt(kb.nextLine());
|
gewinnkarteAusgeben();
|
||||||
|
|
||||||
if (!this.spiel.punkteEintragen(kategorie))
|
String[] zuWürfeln = {"1", "2", "3", "4", "5"};
|
||||||
System.out.println("Kategorie bereits belegt, bitte andere wählen.");
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
} while(false);
|
|
||||||
|
|
||||||
gewinnkarteAusgeben();
|
for (int i = 1; i <= 3; i++) {
|
||||||
|
int[] würfelwerte = api.wurfDurchführen(zuWürfeln);
|
||||||
|
System.out.print(i + ". Wurf: ");
|
||||||
|
for (int w : würfelwerte) {
|
||||||
|
System.out.print(w + " ");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
System.out.println(" 1 2 3 4 5");
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
|
if (i == 3)
|
||||||
|
break;
|
||||||
|
|
||||||
|
System.out.println("Welche Würfel sollen noch einmal geworfen werden? ");
|
||||||
|
System.out.println("Nr. des/der zu werfenden Würfel(s) durch Leerzeichen getrennt eingeben.");
|
||||||
|
System.out.println("Eine leere Eingabe, beendet das Würfeln.");
|
||||||
|
System.out.print("Eingabe: ");
|
||||||
|
|
||||||
|
String eingabe = kb.nextLine();
|
||||||
|
if (eingabe.isEmpty())
|
||||||
|
break;
|
||||||
|
|
||||||
|
zuWürfeln = eingabe.split(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
gewinnkarteAusgeben();
|
||||||
|
|
||||||
|
System.out.println("In welcher Kategorie sollen die Punkte eingetragen werden?");
|
||||||
|
do {
|
||||||
|
System.out.print("> ");
|
||||||
|
int kategorie= Integer.parseInt(kb.nextLine());
|
||||||
|
|
||||||
|
if (!api.punkteEintragen(kategorie))
|
||||||
|
System.out.println("Kategorie bereits belegt, bitte andere wählen.");
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
} while(false);
|
||||||
|
|
||||||
|
gewinnkarteAusgeben();
|
||||||
|
|
||||||
|
} while(api.nächsterSpieler());
|
||||||
|
|
||||||
|
System.out.println("Spielende!");
|
||||||
|
// TODO: Gewinnerprüfung
|
||||||
}
|
}
|
||||||
|
|
||||||
private void gewinnkarteAusgeben() {
|
private void gewinnkarteAusgeben() {
|
||||||
System.out.println();
|
System.out.println();
|
||||||
System.out.println("##################################################");
|
System.out.println("##################################################");
|
||||||
System.out.println("Gewinnkarte von " + this.spiel.getNameAktuellerSpieler());
|
System.out.println("Gewinnkarte von " + api.getNameAktuellerSpieler());
|
||||||
System.out.println(this.spiel.getGewinnkartentextAktuellerSpieler());
|
System.out.println(api.getGewinnkarte().toString());
|
||||||
System.out.println("##################################################");
|
System.out.println("##################################################");
|
||||||
System.out.println();
|
System.out.println();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
package de.hs_mannheim.informatik.games.kniffel.domain;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class WürfelTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testWürfelEinsBisSechs() {
|
||||||
|
Würfel w = new Würfel();
|
||||||
|
|
||||||
|
for (int i = 0; i < 1000; i++) {
|
||||||
|
int augen = w.würfle();
|
||||||
|
assertTrue(augen >= 1 && augen <= 6);
|
||||||
|
assertEquals(augen, w.getAugen());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAugenVerteilung() {
|
||||||
|
Würfel w = new Würfel();
|
||||||
|
|
||||||
|
Set<Integer> zahlen = new HashSet<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < 1000; i++) {
|
||||||
|
zahlen.add(w.würfle());
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(6, zahlen.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled
|
||||||
|
void test8erWürfel() {
|
||||||
|
Würfel w = new Würfel(8);
|
||||||
|
|
||||||
|
for (int i = 0; i < 1000; i++) {
|
||||||
|
int augen = w.würfle();
|
||||||
|
assertTrue(augen >= 1 && augen <= 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue