public static ITurnSelector CreateCornerAndGreedyTurnSelector() { var cornerSelector = new CornerTurnSelector(); var borderSelector = new BorderTurnSelector(); var greedySelector = new GreedyTurnSelector(); ITurnSelector[] selectors = new ITurnSelector[3] { cornerSelector, borderSelector, greedySelector }; CompositeTurnSelector result = new CompositeTurnSelector(selectors); return(result); }
public IReversiTurn SelectBestTurnOnBoard( IEnumerable <IReversiTurn> validTurns, IBoardState board) { if (null == validTurns) { return(null); } int selectorsCount = this._selectorsSortedByPriorityAsc.Length; for (int selectorIndex = 0; selectorIndex < selectorsCount; ++selectorIndex) { ITurnSelector currentSelector = this._selectorsSortedByPriorityAsc[selectorIndex]; IReversiTurn currentSuggestion = currentSelector.SelectBestTurnOnBoard(validTurns, board); if (null != currentSuggestion) { return(currentSuggestion); } } return(null); }