package com.captstudios.games.tafl.core.es.model.ai; import com.captstudios.games.tafl.core.consts.Constants; import com.captstudios.games.tafl.core.enums.AiType; import com.captstudios.games.tafl.core.es.model.TaflBoard; import com.captstudios.games.tafl.core.es.model.ai.evaluators.CompleteEvaluator; import com.captstudios.games.tafl.core.es.model.ai.optimization.moves.HistoryTable; import com.captstudios.games.tafl.core.es.model.ai.optimization.transposition.TranspositionTable; public class AiFactory { public static AiStrategy getAiStrategy(AiType type, TaflBoard board) { TranspositionTable transpositionTable = new TranspositionTable(Constants.AiConstants.TRANSPOSITION_TABLE_SIZE); HistoryTable historyTable = new HistoryTable(board.boardSize); switch (type) { case AI_BEGINNER: return new AlphaBetaMoveStrategy( transpositionTable, historyTable, new CompleteEvaluator(board), board.rules, board.boardType.beginnerDepth); case AI_INTERMEDIATE: return new AlphaBetaMoveStrategy( transpositionTable, historyTable, new CompleteEvaluator(board), board.rules, board.boardType.intermediateDepth); case AI_ADVANCED: return new AlphaBetaMoveStrategy( transpositionTable, historyTable, new CompleteEvaluator(board), board.rules, board.boardType.advancedDepth); default: return null; } } }