Package: DilemmaGame
DilemmaGame
| name | instruction | branch | complexity | line | method | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DilemmaGame(int, IDilemmaState, Map, long, IDilemmaMoveChecker, ObserverFactoryProvider) | 
  | 
  | 
  | 
  | 
  | 
||||||||||||||||||||
| chooseRandomMove(IDilemmaPlayer, IDilemmaState) | 
  | 
  | 
  | 
  | 
  | 
||||||||||||||||||||
| static {...} | 
  | 
  | 
  | 
  | 
  | 
||||||||||||||||||||
| toString() | 
  | 
  | 
  | 
  | 
  | 
||||||||||||||||||||
Coverage
1: package de.fhdw.gaming.ipspiel23.dilemma.domain.internals;
2: 
3: import java.util.Map;
4: import java.util.Optional;
5: import java.util.Random;
6: 
7: import de.fhdw.gaming.core.domain.DefaultGame;
8: import de.fhdw.gaming.core.domain.ObserverFactoryProvider;
9: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaGame;
10: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaMoveChecker;
11: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaPlayer;
12: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaState;
13: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaStrategy;
14: import de.fhdw.gaming.ipspiel23.dilemma.moves.IDilemmaMove;
15: import de.fhdw.gaming.ipspiel23.dilemma.moves.internals.DilemmaCooperateMove;
16: import de.fhdw.gaming.ipspiel23.dilemma.moves.internals.DilemmaDefectMove;
17: 
18: /**
19:  * Implements the Dilemma game.
20:  */
21: public class DilemmaGame 
22:         extends DefaultGame<IDilemmaPlayer, IDilemmaState, IDilemmaMove, IDilemmaStrategy> 
23:         implements IDilemmaGame {
24:     
25:     /**
26:      * yay it's your friendly neighborhood random number generator :).
27:      */
28:     private static final Random RANDOM = new Random();
29:             
30:     /**
31:      * Creates a Dilemma game.
32:      *
33:      * @param id                        The ID of this game.
34:      * @param initialState              The initial state of the game.
35:      * @param strategies                The players' strategies.
36:      * @param maxComputationTimePerMove The maximum computation time per move in seconds.
37:      * @param moveChecker               The move checker.
38:      * @param observerFactoryProvider   The {@link ObserverFactoryProvider}.
39:      * @throws IllegalArgumentException if the player sets do not match.
40:      * @throws InterruptedException     if creating the game has been interrupted.
41:      */
42:     DilemmaGame(final int id, final IDilemmaState initialState, final Map<String, IDilemmaStrategy> strategies,
43:             final long maxComputationTimePerMove, final IDilemmaMoveChecker moveChecker,
44:             final ObserverFactoryProvider observerFactoryProvider)
45:             throws IllegalArgumentException, InterruptedException {
46: 
47:         super(id, initialState, strategies, maxComputationTimePerMove, moveChecker, observerFactoryProvider);
48:     }
49: 
50:     @Override
51:     public Optional<IDilemmaMove> chooseRandomMove(final IDilemmaPlayer player, final IDilemmaState state) {
52:•        return Optional.of(RANDOM.nextBoolean()
53:             ? new DilemmaDefectMove()
54:             : new DilemmaCooperateMove());
55:     }
56:     
57:     @Override
58:     public String toString() {
59:         return String.format("DilemmaGame[id=%d, %s]", this.getId(), this.gameToString());
60:     }
61: }