protected PlayerTurnState(IGame game, IIntelligenceContextFactory contextFactory, IIntelligenceContext context, IInputOutput io) { Game = game; ContextFactory = contextFactory; Context = context; IO = io; }
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); }
public void VerifyDetermineBestCalled(IIntelligenceContext context, int times = 1) { _mock.Verify(m => m.DetermineBest(context), Times.Exactly(times)); }
public BoardCoordinate DetermineBest(IIntelligenceContext context) { return(_mock.Object.DetermineBest(context)); }
public BoardCoordinate DetermineBest(IIntelligenceContext context) { var answer = _io.Read("Choose a position: "); return(context.Board.ToCoordinate(int.Parse(answer))); }
public MockIntelligenceContextFactory CreateStubbedToReturn(IIntelligenceContext aiContext) { _mock.Setup(m => m.Create(It.IsAny <IGame>())).Returns(aiContext); return(this); }
public void MakeMove(IIntelligenceContext context) { var move = CurrentPlayer.GetBestMove(context); CurrentPlayer.ChoosePosition(Board, move.ToPosition(Board.Size)); }
public BoardCoordinate GetBestMove(IIntelligenceContext context) { return(null); }
public void VerifyGetBestMoveCalled(IIntelligenceContext context, int times = 1) { _mock.Verify(m => m.GetBestMove(context), Times.Exactly(times)); }
public BoardCoordinate GetBestMove(IIntelligenceContext context) { return(_mock.Object.GetBestMove(context)); }
public Player1TurnState(IGame game, IIntelligenceContextFactory contextFactory, IIntelligenceContext context, IInputOutput io) : base(game, contextFactory, context, io) { }
public BoardCoordinate GetBestMove(IIntelligenceContext context) { return(AI.DetermineBest(context)); }
public void MakeMove(IIntelligenceContext context) { _mock.Object.MakeMove(context); }
public BoardCoordinate DetermineBest(IIntelligenceContext context) { throw new System.NotImplementedException(); }
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)); }