Skip to content

Method: equals(Object)

1: package de.fhdw.gaming.ipspiel23.ssp.strategy;
2:
3: import java.util.List;
4: import java.util.Optional;
5: import java.util.Random;
6: import java.util.function.Supplier;
7:
8: import de.fhdw.gaming.core.domain.GameException;
9: import de.fhdw.gaming.ipspiel23.ssp.domain.SspPlayer;
10: import de.fhdw.gaming.ipspiel23.ssp.domain.SspState;
11: import de.fhdw.gaming.ipspiel23.ssp.domain.SspStrategy;
12: import de.fhdw.gaming.ipspiel23.ssp.moves.SspMove;
13: import de.fhdw.gaming.ipspiel23.ssp.moves.factory.SspMoveFactory;
14:
15: /**
16: * Implements {@link SspStrategy} by always choosing a random Answer.
17: *
18: * @author DW
19: *
20: */
21: public final class SspMixedStrategy implements SspStrategy {
22:
23: /**
24: * The random generator used to create random SSP moves.
25: *
26: */
27: private static final Random RANDOM = new Random();
28:
29: /**
30: * The factory for creating SSP moves.
31: */
32: private final SspMoveFactory moveFactory;
33:
34: /**
35: * Creates an {@link SspMixedStrategy}.
36: *
37: * @param moveFactory The factory for creating SSP moves.
38: */
39: SspMixedStrategy(final SspMoveFactory moveFactory) {
40: this.moveFactory = moveFactory;
41:
42: }
43:
44: /**
45: * Computes a random next move.
46: */
47: @Override
48: public Optional<SspMove> computeNextMove(final int gameId, final SspPlayer player, final SspState state)
49: throws GameException, InterruptedException {
50: final List<Supplier<SspMove>> moveSuppliers = List.of(
51: moveFactory::createPaperMove,
52: moveFactory::createScissorsMove,
53: moveFactory::createStoneMove);
54: return Optional.of(moveSuppliers.get(RANDOM.nextInt(moveSuppliers.size())).get());
55: }
56:
57: @Override
58: public String toString() {
59: return SspMixedStrategy.class.getSimpleName();
60: }
61:
62: @Override
63: public boolean equals(final Object obj) {
64:• return obj != null && this.toString().equals(obj.toString());
65: }
66:
67: @Override
68: public int hashCode() {
69:
70: return super.hashCode() * this.toString().hashCode();
71: }
72: }