Skip to content

Package: SSPGameImpl

SSPGameImpl

nameinstructionbranchcomplexitylinemethod
SSPGameImpl(int, SSPState, Map, long, SSPMoveChecker, ObserverFactoryProvider)
M: 0 C: 14
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
chooseRandomMove(SSPPlayer, SSPState)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
toString()
M: 0 C: 16
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: package de.schereSteinPapier.domain.impl;
2:
3: import java.util.Map;
4: import java.util.Optional;
5:
6: import de.fhdw.gaming.core.domain.DefaultGame;
7: import de.fhdw.gaming.core.domain.ObserverFactoryProvider;
8: import de.schereSteinPapier.domain.SSPGame;
9: import de.schereSteinPapier.domain.SSPMoveChecker;
10: import de.schereSteinPapier.domain.SSPPlayer;
11: import de.schereSteinPapier.domain.SSPState;
12: import de.schereSteinPapier.domain.SSPStrategy;
13: import de.schereSteinPapier.moves.SSPMove;
14: import de.schereSteinPapier.moves.factory.SSPMoveFactory;
15: import de.schereSteinPapier.moves.impl.SSPDefaultMoveFactory;
16:
17: /**
18: * Implements the SSP game.
19: */
20: final class SSPGameImpl extends DefaultGame<SSPPlayer, SSPState, SSPMove, SSPStrategy> implements SSPGame {
21:
22: /**
23: * The move factory.
24: */
25: private final SSPMoveFactory moveFactory;
26:
27: /**
28: * Creates a SSP game.
29: *
30: * @param id The ID of this game.
31: * @param initialState The initial state of the game.
32: * @param strategies The players' strategies.
33: * @param maxComputationTimePerMove The maximum computation time per move in seconds.
34: * @param moveChecker The move checker.
35: * @param observerFactoryProvider The {@link ObserverFactoryProvider}.
36: * @throws IllegalArgumentException if the player sets do not match.
37: * @throws InterruptedException if creating the game has been interrupted.
38: */
39: SSPGameImpl(final int id, final SSPState initialState, final Map<String, SSPStrategy> strategies,
40: final long maxComputationTimePerMove, final SSPMoveChecker moveChecker,
41: final ObserverFactoryProvider observerFactoryProvider)
42: throws IllegalArgumentException, InterruptedException {
43:
44: super(id, initialState, strategies, maxComputationTimePerMove, moveChecker, observerFactoryProvider);
45: this.moveFactory = new SSPDefaultMoveFactory();
46: }
47:
48: @Override
49: public Optional<SSPMove> chooseRandomMove(final SSPPlayer player, final SSPState state) {
50: // choose "no" to punish lame strategies
51: return Optional.of(this.moveFactory.createPapierMove());
52: }
53:
54: @Override
55: public String toString() {
56: return String.format("SSPGame[id=%d, %s]", this.getId(), this.gameToString());
57: }
58: }