Browse Source

Refactoring checkDice method

AIPlayer
FelixKrull 2 years ago
parent
commit
a6c3fef1c2
  1. 41
      src/main/java/Game.java
  2. 51
      src/test/java/GameTest.java

41
src/main/java/Game.java

@ -1,4 +1,5 @@
import java.util.ArrayList;
import java.util.Iterator;
public class Game {
@ -7,10 +8,20 @@ public class Game {
public static void main(String[] args) {
Game g = new Game();
/*while (checkDice() != 0) {
int dice = g.players[0].rollDice();
System.out.println("Würfel: " + dice);
}*/
while(true){
for (Player p : g.players) {
int c = 0;
int dice;
do {
dice = p.rollDice();
c++;
} while (g.checkDice(dice, p, c));
p.checkGameWin(p.figures);
}
}
}
public Game() {
@ -23,26 +34,10 @@ public class Game {
players.add(new Player("Grün", 52, 55));
}
public int checkDice(int dice, Player p) {
public boolean checkDice(int dice, Player p, int countRolls) {
int figuresInBase = p.checkFigureInBase(p.figures);
if(figuresInBase == 4) {
if(dice == 6) {
return 1;
} else {
return 0;
}
} else if(figuresInBase > 0) {
if(dice == 6) {
return 3;
} else {
return 2;
}
} else {
if(dice == 6) {
return 5;
} else {
return 4;
}
}
return countRolls <= 3;
} else return dice == 6;
}
}

51
src/test/java/GameTest.java

@ -22,55 +22,60 @@ public class GameTest {
@ParameterizedTest
@MethodSource("checkDiceTestData")
void checkDiceTest(String testname, Player testPlayer, Collection<Integer> positions, int dice, int expectedResult) {
void checkDiceTest(String testname, Player testPlayer, Collection<Integer> positions, int dice, int c, boolean expectedResult) {
Iterator<Figure> it = testPlayer.figures.iterator();
Iterator<Integer> it2 = positions.iterator();
while(it.hasNext()) {
it.next().setPosition(it2.next());
}
int calculatedResult = g.checkDice(dice, testPlayer);
boolean calculatedResult = g.checkDice(dice, testPlayer, c);
assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
}
static Stream<Arguments> checkDiceTestData () {
return Stream.of(
Arguments.of("No figures on Field - not a 6",
Arguments.of("No figures on Field - d: 1 - c: 1",
new Player("Rot", 40, 43),
Arrays.asList(-1, -1, -1, -1),
1,
0
1,
true
),
Arguments.of("No figures on Field - a 6",
Arguments.of("No figures on Field - d: 1 - c: 2",
new Player("Rot", 40, 43),
Arrays.asList(-1, -1, -1, -1),
6,
1
1,
2,
true
),
Arguments.of("Few Figures in Field - not a 6",
Arguments.of("No figures on Field - d: 1 - c: 3",
new Player("Rot", 40, 43),
Arrays.asList(25, -1, 13, -1),
2,
2
Arrays.asList(-1, -1, -1, -1),
1,
3,
true
),
Arguments.of("Few Figures in Field - a 6",
Arguments.of("No figures on Field - d: 1 - c: 4",
new Player("Rot", 40, 43),
Arrays.asList(25, -1, 13, -1),
6,
3
Arrays.asList(-1, -1, -1, -1),
1,
4,
false
),
Arguments.of("All Figures in Field - not a 6",
Arguments.of("Figures on Field - d: 1 - c: 1",
new Player("Rot", 40, 43),
Arrays.asList(2, 10, 15, 21),
3,
4
Arrays.asList(10, -1, 2, -1),
1,
1,
false
),
Arguments.of("All Figures in Field - a 6",
Arguments.of("Figures on Field - d: 6 - c: 1",
new Player("Rot", 40, 43),
Arrays.asList(2, 10, 15, 21),
Arrays.asList(10, -1, 2, -1),
6,
5
1,
true
)
);
}
}
Loading…
Cancel
Save