Skip to content

Package: VierGewinntGameImpl

VierGewinntGameImpl

nameinstructionbranchcomplexitylinemethod
VierGewinntGameImpl(int, VierGewinntState, Map, long, MoveChecker, ObserverFactoryProvider)
M: 14 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
chooseRandomMove(VierGewinntPlayer, VierGewinntState)
M: 30 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 6 C: 0
0%
M: 1 C: 0
0%

Coverage

1: package de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.impl;
2:
3: import java.util.Map;
4: import java.util.Optional;
5: import java.util.Random;
6: import java.util.Set;
7:
8: import de.fhdw.gaming.core.domain.DefaultGame;
9: import de.fhdw.gaming.core.domain.MoveChecker;
10: import de.fhdw.gaming.core.domain.ObserverFactoryProvider;
11: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.VierGewinntField;
12: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.VierGewinntGame;
13: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.VierGewinntPlayer;
14: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.VierGewinntState;
15: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.VierGewinntStrategy;
16: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.moves.VierGewinntMove;
17: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.moves.factory.VierGewinntDefaultMoveFactory;
18: import de.fhdw.gaming.ipspiel21.viergewinnt.core.domain.moves.factory.VierGewinntMoveFactory;
19:
20: /**
21: * Implementation of a VierGewinntGame.
22: *
23: * @author Robby Rabbitman
24: *
25: */
26: public class VierGewinntGameImpl
27: extends DefaultGame<VierGewinntPlayer, VierGewinntState, VierGewinntMove, VierGewinntStrategy>
28: implements VierGewinntGame {
29: /**
30: * The move factory.
31: */
32: private final VierGewinntMoveFactory moveFactory;
33:
34: /**
35: * .
36: *
37: * @param id
38: * @param initialState
39: * @param strategies
40: * @param maxComputationTimePerMove
41: * @param moveChecker
42: * @param observerFactoryProvider
43: * @throws IllegalArgumentException
44: * @throws InterruptedException
45: */
46: public VierGewinntGameImpl(final int id, final VierGewinntState initialState,
47: final Map<String, VierGewinntStrategy> strategies, final long maxComputationTimePerMove,
48: final MoveChecker<VierGewinntPlayer, VierGewinntState, VierGewinntMove> moveChecker,
49: final ObserverFactoryProvider observerFactoryProvider)
50: throws IllegalArgumentException, InterruptedException {
51: super(id, initialState, strategies, maxComputationTimePerMove, moveChecker, observerFactoryProvider);
52: this.moveFactory = new VierGewinntDefaultMoveFactory();
53: }
54:
55: @Override
56: public Optional<VierGewinntMove> chooseRandomMove(final VierGewinntPlayer player,
57: final VierGewinntState state) {
58: final Set<VierGewinntField> fields = state.getBoard().getAllPlayableFields();
59: final Optional<VierGewinntField> field =
60: fields.stream().skip(new Random().nextInt(fields.size())).findFirst();
61:• if (field.isPresent()) {
62: return Optional.of(this.moveFactory.createMove(field.get().getPosition()));
63: }
64: return Optional.empty();
65: }
66:
67: }