Example #1
0
 protected PlayerTurnState(IGame game, IIntelligenceContextFactory contextFactory, IIntelligenceContext context, IInputOutput io)
 {
     Game           = game;
     ContextFactory = contextFactory;
     Context        = context;
     IO             = io;
 }
Example #2
0
        public BoardCoordinate DetermineBest(IIntelligenceContext context)
        {
            var miniMaxContext = (MiniMaxContext)context;
            var openSpaces     = miniMaxContext.Board.GetOpenSpaces();

            if (openSpaces.Count() == miniMaxContext.Board.Size * miniMaxContext.Board.Size)
            {
                return(miniMaxContext.Board.ToCoordinate(GetRandomCorner(miniMaxContext.Board)));
            }
            //if (openSpaces.Count() == 1)
            //    return openSpaces.First();

            var opponent  = GetOpponent(miniMaxContext);
            var bestSpace = default(BoardCoordinate);

            foreach (var openSpace in openSpaces)
            {
                var newBoard = (IBoard)miniMaxContext.Board.Clone();
                var newSpace = (BoardCoordinate)openSpace.Clone();
                miniMaxContext.MinimizedPlayer.ChoosePosition(newBoard, newSpace.ToPosition(newBoard.Size));
                var winner = newBoard.GetWinner(miniMaxContext.Players);
                if (winner is Nobody && newBoard.GetOpenSpaces().Any())
                {
                    newSpace.Rank += GetChildRank(miniMaxContext, newBoard, opponent);
                }
                else
                {
                    newSpace.Rank += GetRank(winner, miniMaxContext);
                }

                if ((bestSpace == null) ||
                    ((miniMaxContext.MinimizedPlayer.Symbol == miniMaxContext.CurrentPlayer.Symbol) && (newSpace.Rank < bestSpace.Rank)) ||
                    ((miniMaxContext.MinimizedPlayer.Symbol == miniMaxContext.Opponent.Symbol) && (newSpace.Rank > bestSpace.Rank)))
                {
                    bestSpace = newSpace;
                }
            }

            return(bestSpace);
        }
Example #3
0
 public void VerifyDetermineBestCalled(IIntelligenceContext context, int times = 1)
 {
     _mock.Verify(m => m.DetermineBest(context), Times.Exactly(times));
 }
Example #4
0
 public BoardCoordinate DetermineBest(IIntelligenceContext context)
 {
     return(_mock.Object.DetermineBest(context));
 }
Example #5
0
        public BoardCoordinate DetermineBest(IIntelligenceContext context)
        {
            var answer = _io.Read("Choose a position: ");

            return(context.Board.ToCoordinate(int.Parse(answer)));
        }
Example #6
0
 public MockIntelligenceContextFactory CreateStubbedToReturn(IIntelligenceContext aiContext)
 {
     _mock.Setup(m => m.Create(It.IsAny <IGame>())).Returns(aiContext);
     return(this);
 }
Example #7
0
        public void MakeMove(IIntelligenceContext context)
        {
            var move = CurrentPlayer.GetBestMove(context);

            CurrentPlayer.ChoosePosition(Board, move.ToPosition(Board.Size));
        }
Example #8
0
 public BoardCoordinate GetBestMove(IIntelligenceContext context)
 {
     return(null);
 }
Example #9
0
 public void VerifyGetBestMoveCalled(IIntelligenceContext context, int times = 1)
 {
     _mock.Verify(m => m.GetBestMove(context), Times.Exactly(times));
 }
Example #10
0
 public BoardCoordinate GetBestMove(IIntelligenceContext context)
 {
     return(_mock.Object.GetBestMove(context));
 }
Example #11
0
 public Player1TurnState(IGame game, IIntelligenceContextFactory contextFactory, IIntelligenceContext context, IInputOutput io) : base(game, contextFactory, context, io)
 {
 }
Example #12
0
 public BoardCoordinate GetBestMove(IIntelligenceContext context)
 {
     return(AI.DetermineBest(context));
 }
Example #13
0
 public void MakeMove(IIntelligenceContext context)
 {
     _mock.Object.MakeMove(context);
 }
Example #14
0
 public BoardCoordinate DetermineBest(IIntelligenceContext context)
 {
     throw new System.NotImplementedException();
 }
Example #15
0
 private static Player1TurnState BuildPlayer1TurnState(IGame game = null, IIntelligenceContextFactory contextFactory = null, IIntelligenceContext context = null, IInputOutput io = null)
 {
     game           = game ?? new MockGame();
     contextFactory = contextFactory ?? new MockIntelligenceContextFactory();
     context        = context ?? new MockIntelligenceContext();
     io             = io ?? new MockInputOutput();
     return(new Player1TurnState(game, contextFactory, context, io));
 }