Compare commits

...

2 Commits

Author SHA1 Message Date
hummel 13440e4437 Spiel weiter spielbar gemacht
Nun kann ein komplettes Spiel mit mehreren Spielern bis zum Befüllen
aller Kategorien gespielt werden.
2024-05-16 18:56:15 +02:00
hummel cdee044dd1 Update WürfelTest mit Testen der Verteilung 2024-05-16 17:57:03 +02:00
7 changed files with 162 additions and 57 deletions

3
.gitignore vendored 100644
View File

@ -0,0 +1,3 @@
/bin/
/.classpath
/.project

View File

@ -3,9 +3,11 @@ package de.hs_mannheim.informatik.games.kniffel.domain;
public class Gewinnkarte {
private Kategorie[] kategorien;
private final int KATEGORIE_ANZAHL = 6;
private int summe;
public Gewinnkarte() {
kategorien = new Kategorie[KATEGORIE_ANZAHL];
summe = 0;
for (int i = 1; i <= kategorien.length; i++) {
kategorien[i-1] = new Kategorie(i);
@ -16,7 +18,7 @@ public class Gewinnkarte {
if (!kategorien[kategorie].isOffen())
return false;
kategorien[kategorie].punkteEintragen(würfel);
summe+= kategorien[kategorie].punkteEintragen(würfel);
return true;
}
@ -33,11 +35,15 @@ public class Gewinnkarte {
else
sb.append(k.getPunkte());
if (i <= kategorien.length)
sb.append(System.lineSeparator());
}
sb.append(String.format("Summe: %3d Punkte", summe));
return sb.toString();
}
public int getKategorieAnzahl() {
return KATEGORIE_ANZAHL;
}
}

View File

@ -7,6 +7,8 @@ public class Spiel {
private int spieleranzahl;
private int aktuellerSpieler;
private Würfelbecher becher;
private int rundenzähler;
private int spielerzähler;
public Spiel(ArrayList<String> spielernamen) {
spieleranzahl = spielernamen.size();
@ -17,6 +19,8 @@ public class Spiel {
}
aktuellerSpieler = (int)(Math.random() * spieleranzahl);
rundenzähler = 1;
spielerzähler = 1;
becher = new Würfelbecher();
becher.würfle();
@ -43,4 +47,15 @@ public class Spiel {
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();
}
}

View File

@ -1,22 +1,43 @@
package de.hs_mannheim.informatik.games.kniffel.domain;
import static org.junit.jupiter.api.Assertions.*;
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ürfel() {
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);

View File

@ -9,7 +9,6 @@ public class KniffelApi {
private Spiel spiel;
public void starteSpiel(ArrayList<String> spielernamen, boolean starWarsModus) {
// TODO: StarWars über Vererbung einbauen?
spiel = new Spiel(spielernamen);
}
@ -29,4 +28,8 @@ public class KniffelApi {
public boolean punkteEintragen(int kategorie) {
return spiel.punkteEintragen(kategorie);
}
public boolean nächsterSpieler() {
return spiel.nächsterSpieler();
}
}

View File

@ -14,9 +14,11 @@ public class SpielrundeSpielen {
}
public void verarbeiteEingabe() {
do {
System.out.print(">>>>>>>>>");
gewinnkarteAusgeben();
String[] zuWürfeln = new String[0];
String[] zuWürfeln = {"1", "2", "3", "4", "5"};
for (int i = 1; i <= 3; i++) {
int[] würfelwerte = api.wurfDurchführen(zuWürfeln);
@ -57,6 +59,11 @@ public class SpielrundeSpielen {
} while(false);
gewinnkarteAusgeben();
} while(api.nächsterSpieler());
System.out.println("Spielende!");
// TODO: Gewinnerprüfung
}
private void gewinnkarteAusgeben() {

View File

@ -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);
}
}
}