package de.fhdw.gaming.ipspiel23.c4.gststrategy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
import de.fhdw.gaming.core.domain.GameException;
import de.fhdw.gaming.core.domain.Move;
import de.fhdw.gaming.ipspiel23.c4.domain.IC4Player;
import de.fhdw.gaming.ipspiel23.c4.domain.IC4State;
import de.fhdw.gaming.ipspiel23.c4.moves.IC4Move;
import de.fhdw.gaming.ipspiel23.c4.moves.factory.IC4MoveFactory;
import de.fhdw.gaming.ipspiel23.c4.strategies.IC4Strategy;
import de.fhdw.gaming.ipspiel23.gst.domain.ICalculatorKopplung;
import de.fhdw.gaming.ipspiel23.gst.domain.IKopplung;
import de.fhdw.gaming.ipspiel23.gst.domain.impl.GstKopplungsMoveCalculator;
import de.fhdw.gaming.ipspiel23.gst.strategies.impl.GstKopplungNegaMax;
import de.fhdw.gaming.ipspiel23.gst.strategies.impl.GstKopplungNegaMaxMultithreading;
/**
* GSTMoveStrategy for C4 Game.
*/
public class C4GSTMoveStrategy implements IC4Strategy {
/**
* The calculator used for computing the next move.
*/
private ICalculatorKopplung<IC4Player, IC4State> calc;
/**
* The MoveFactory.
*/
private IC4MoveFactory moveFactory;
/**
* The C4-GST-Kopplung.
*/
private IKopplung<IC4Player, IC4State> c4Kopplung;
/**
* .
*/
private GstKopplungNegaMaxMultithreading<IC4Player, IC4State> negamax;
//private GstKopplungNegaMax<IC4Player, IC4State> negamax;
/**
* Creates new C4GSTMoveStrategy with given MoveFactory.
* @param moveFactory
*/
public C4GSTMoveStrategy(IC4MoveFactory moveFactory) {
this.moveFactory = moveFactory;
this.c4Kopplung = new C4GSTKopplung(moveFactory);
//this.negamax = new GstKopplungNegaMax<>();
this.negamax = new GstKopplungNegaMaxMultithreading<>();
this.calc = new GstKopplungsMoveCalculator<>();
}
@Override
public Optional<IC4Move> computeNextMove(int gameId, IC4Player player, IC4State state)
Parameter 'state' is not assigned and could be declared final.
A method argument that is never re-assigned within the method can be declared final.
public void foo1 (String param) { // do stuff with param never assigning it
}
public void foo2 (final String param) { // better, do stuff with param never assigning it
}