10 Commits

  1. 21
      src/main/java/Game.java
  2. 22
      src/test/java/GameTest.java

21
src/main/java/Game.java

@ -11,11 +11,12 @@ public class Game {
public static void main(String[] args) throws InterruptedException {
Game g = new Game();
Player winner;
clearScreen();
while(true){
for (Player p : g.players) {
int c = 0;
int dice;
System.out.println("Spieler " + p.name + " an der Reihe.");
System.out.println(g.printGameboard(g, p));
do {
int figId;
dice = p.rollDice();
@ -28,6 +29,8 @@ public class Game {
figId = p.choose(usableFigures);
} while(figId == -1);
g.setFigure(figId, dice, p, g);
clearScreen();
System.out.println(g.printGameboard(g, p));
}
} while (g.checkDice(dice, p, c));
if(p.checkGameWin(p.figures)) {
@ -35,6 +38,8 @@ public class Game {
System.out.println("Spieler " + winner.name + " gewinnt!");
exit(42);
}
TimeUnit.SECONDS.sleep(1L);
clearScreen();
}
}
}
@ -126,7 +131,7 @@ public class Game {
if(p.checkFigureInBase(p.figures) > 0 && dice == 6){
if(g.checkFieldClear(p.startPos, p, g) == 2) {
return f.getPosition() == p.startPos; //TODO Wenn Figur auf Startpos von anderer Figur blockiert ist
return f.getPosition() == p.startPos;
}
return f.getPosition() == -1;
} else if (f.getPosition() <= p.jumpToHome && (f.getPosition() + dice) > p.jumpToHome) {
@ -135,7 +140,9 @@ public class Game {
} else {
return false;
}
} else if(f.getPosition() != -1) {
} else if(f.getPosition() >= p.startHome && (f.getPosition() + dice) < p.startHome + 4) {
return g.checkFieldClear(f.getPosition() + dice, p, g) == 0;
} else if(f.getPosition() != -1 && f.getPosition() < 40) {
return g.checkFieldClear((f.getPosition() + dice) % 40, p, g) != 2;
}
return false;
@ -153,19 +160,21 @@ public class Game {
int preCalculated;
if (p.figures.get(figId).getPosition() == -1) {
preCalculated = p.startPos;
} else if (p.figures.get(figId).getPosition() <= p.jumpToHome && (p.figures.get(figId).getPosition() + dice) > p.jumpToHome) {
preCalculated = p.startHome + (dice - (p.jumpToHome - p.figures.get(figId).getPosition()) - 1);
} else if (p.figures.get(figId).getPosition() >= p.startHome) {
preCalculated = p.figures.get(figId).getPosition() + dice;
}else {
preCalculated = (p.figures.get(figId).getPosition() + dice) % 40;
}
int kicked = 0;
for(Player currentPlayer : g.players) {
for(Figure currentFigure : currentPlayer.figures) {
if(currentFigure.getPosition() == preCalculated) {
currentFigure.setPosition(-1);
kicked = 1;
}
}
}
p.figures.get(figId).setPosition(preCalculated);
return kicked;
return preCalculated;
}
}

22
src/test/java/GameTest.java

@ -24,9 +24,6 @@ public class GameTest {
g2 = new Game();
p2 = g2.players.get(0);
p2.figures.get(0).setPosition(5);
p2.figures.get(1).setPosition(10);
g2.players.get(3).figures.get(1).setPosition(14);
}
@ParameterizedTest
@ -59,7 +56,7 @@ public class GameTest {
Arrays.asList(-1, -1, -1, -1),
1,
3,
true
false
),
Arguments.of("No figures on Field - d: 1 - c: 4",
Arrays.asList(-1, -1, -1, -1),
@ -162,21 +159,30 @@ public class GameTest {
6,
Arrays.asList(-1, -1, -1, 0),
new ArrayList<>(List.of(3))
),
Arguments.of( //Würfel 6 - 1 Figur auf dem Spielfeld - StartFeld besetzt
"Figur auf Startfeld",
5,
Arrays.asList(-1, 41, -1, 0),
new ArrayList<>(List.of(3))
)
);
}
@ParameterizedTest
@MethodSource("setFigureData")
void setFigureTest(String testname, int figId, int dice, int expectedResult) {
int calculatedResult = g.setFigure(figId, dice, p2, g2);
void setFigureTest(String testname, int figId, int dice, int currentPosition, int expectedResult) {
p2.figures.get(figId).setPosition(currentPosition);
int calculatedResult = g2.setFigure(figId, dice, p2, g2);
assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
}
static Stream<Arguments> setFigureData () {
return Stream.of(
Arguments.of("Figur wird auf Feld gesetzt - Niemand gekicked", 0, 4, 0),
Arguments.of("Figur wird auf Feld gesetzt - Jemand gekicked", 1, 4, 1)
Arguments.of("Figur wird auf Feld gesetzt - Niemand gekicked", 0, 4, 5, 9),
Arguments.of("Figur wird auf Feld gesetzt - Jemand gekicked", 1, 4, 10, 14),
Arguments.of("Figur wird ins Haus gesetzt", 3, 4, 38, 42),
Arguments.of("Figur wird im Haus gesetzt", 3, 3, 41, 44)
);
}
}

Loading…
Cancel
Save