Skip to content

Method: DilemmaRandomStrategy(IDilemmaMoveFactory)

1: package de.fhdw.gaming.ipspiel23.dilemma.strategy.internals.random;
2:
3: import java.util.Optional;
4: import java.util.Random;
5:
6: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaPlayer;
7: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaState;
8: import de.fhdw.gaming.ipspiel23.dilemma.domain.IDilemmaStrategy;
9: import de.fhdw.gaming.ipspiel23.dilemma.moves.IDilemmaMove;
10: import de.fhdw.gaming.ipspiel23.dilemma.moves.IDilemmaMoveFactory;
11: import de.fhdw.gaming.ipspiel23.dilemma.strategy.internals.DilemmaStrategy;
12:
13: /**
14: * Implements {@link IDilemmaStrategy} by randomly deciding answers.
15: */
16: public class DilemmaRandomStrategy extends DilemmaStrategy {
17:
18: /**
19: * Your personal entropy dealer - offering random bytes of excitement.
20: */
21: private static final Random RANDOM = new Random();
22:
23: /**
24: * Creates an {@link DilemmaCooperateStrategy}.
25: *
26: * @param moveFactory The factory for creating Dilemma moves.
27: */
28: DilemmaRandomStrategy(final IDilemmaMoveFactory moveFactory) {
29: super(moveFactory);
30: }
31:
32: @Override
33: public Optional<IDilemmaMove> computeNextMove(final int gameId,
34: final IDilemmaPlayer player,
35: final IDilemmaState state) {
36: return Optional.of(RANDOM.nextBoolean()
37: ? getMoveFactory().createCooperateMove()
38: : getMoveFactory().createDefectMove());
39: }
40:
41: @Override
42: public String toString() {
43: return DilemmaRandomStrategy.class.getSimpleName();
44: }
45:
46: @Override
47: public boolean equals(final Object object) {
48: if (object instanceof DilemmaRandomStrategy) {
49: final DilemmaRandomStrategy randomStrategy = (DilemmaRandomStrategy) object;
50: return this.toString().equals(randomStrategy.toString());
51: } else {
52: return false;
53: }
54: }
55:
56: @Override
57: public int hashCode() {
58: return super.hashCode() * this.toString().hashCode();
59: }
60: }