Skip to contentMethod: MinMaxVGStrategy()
      1: package de.fhdw.gaming.ipspiel22.vierGewinnt.strategy;
2: 
3: import java.util.Optional;
4: 
5: import de.fhdw.gaming.core.domain.GameException;
6: import de.fhdw.gaming.ipspiel22.searchtree.algorithm.MinMaxAlgorithm;
7: import de.fhdw.gaming.ipspiel22.vierGewinnt.domain.VGFieldState;
8: import de.fhdw.gaming.ipspiel22.vierGewinnt.domain.VGPlayer;
9: import de.fhdw.gaming.ipspiel22.vierGewinnt.domain.VGState;
10: import de.fhdw.gaming.ipspiel22.vierGewinnt.domain.VGStrategy;
11: import de.fhdw.gaming.ipspiel22.vierGewinnt.moves.VGMove;
12: 
13: /**
14:  * Best Strategy by using the MinMaxAlgorithm.
15:  */
16: public class MinMaxVGStrategy implements VGStrategy {
17: 
18:     @Override
19:     public Optional<VGMove> computeNextMove(final int gameId, final VGPlayer player, final VGState state)
20:             throws GameException {
21:         final MinMaxViergewinnt vg = new MinMaxViergewinnt(state, player);
22:         final MinMaxAlgorithm<VGPlayer, VGState, VGMove, MinMaxViergewinnt> minmax = new MinMaxAlgorithm<>(vg);
23: 
24:         final Optional<VGMove> choosenMove = minmax.getBestMove(5);
25:         System.out.println("Gewählter best move: " + choosenMove.toString() + ", Spielerfarbe: "
26:                 + (player.isUsingRedChips() ? VGFieldState.RED.toString()
27:                         : VGFieldState.YELLOW.toString()));
28:         return choosenMove;
29:     }
30: 
31:     @Override
32:     public String toString() {
33:         return MinMaxVGStrategy.class.getSimpleName();
34:     }
35: }