Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }