Skip to content

Method: getIsGameOver(IC4State)

1: package de.fhdw.gaming.ipspiel23.c4.gststrategy;
2:
3: import java.util.ArrayList;
4: import java.util.Collection;
5: import java.util.Optional;
6:
7: import de.fhdw.gaming.core.domain.Move;
8: import de.fhdw.gaming.core.domain.PlayerState;
9: import de.fhdw.gaming.ipspiel23.c4.domain.IC4Player;
10: import de.fhdw.gaming.ipspiel23.c4.domain.IC4Position;
11: import de.fhdw.gaming.ipspiel23.c4.domain.IC4State;
12: import de.fhdw.gaming.ipspiel23.c4.moves.factory.IC4MoveFactory;
13: import de.fhdw.gaming.ipspiel23.gst.domain.IKopplung;
14:
15: /**
16: * The C4-GST-Kopplung.
17: */
18: public class C4GSTKopplung implements IKopplung<IC4Player, IC4State> {
19:
20:
21: /**
22: * Eval Strategy-Pattern.
23: */
24: private final SimpleC4GSTEvaluation evaluationStrategy;
25:
26:
27:
28: /**
29: * The Movefactory.
30: */
31: private final IC4MoveFactory moveFactory;
32:
33: /**
34: * Ctr.
35: * @param moveFactory
36: */
37: public C4GSTKopplung(final IC4MoveFactory moveFactory) {
38: this.moveFactory = moveFactory;
39: this.evaluationStrategy = new SimpleC4GSTEvaluation();
40: }
41:
42: @Override
43: public Optional<Collection<Move<IC4Player, IC4State>>> getPossibleMoves(final IC4State state) {
44:
45: // seems to work as intended
46: final IC4Position[] positions = state.getBoard().getLegalPositions();
47:
48: final Collection<Move<IC4Player, IC4State>> possibleMoves = new ArrayList<>();
49:
50: for (final IC4Position position : positions) {
51: possibleMoves.add(moveFactory.createMove(state.getCurrentPlayer(), position));
52: }
53:
54: //
55: return Optional.of(possibleMoves);
56: }
57:
58: @Override
59: public Optional<Integer> evalState(final IC4State state) {
60: return Optional.of(evaluationStrategy.evalC4State(state));
61: }
62:
63: @Override
64: public Optional<IC4Player> getCurrentPlayer(final IC4State state) {
65: return Optional.of(state.getCurrentPlayer());
66: }
67:
68: @Override
69: public Optional<Boolean> getIsGameOver(final IC4State state) {
70:
71: return Optional.of(state.getPlayers().values().stream()
72: .filter(p -> p.getState() == PlayerState.PLAYING)
73: .findAny()
74: .isEmpty()
75: );
76:
77: //return Optional.of(false);
78:
79:
80: //return Optional.of(state.getPlayers().values()
81: // .stream()
82: // .filter(p -> p.getOutcome().get() > 0)
83: // .count() > 0);
84:
85:
86:
87: }
88:
89: }