Exemplo n.º 1
0
        private int alphaBeta(eCoinType[][] i_Board, eCoinType i_Color, Point i_Move, int i_Depth, int a, int b)
        {
            var model = new ReverciBoardModel(i_Board);
            model.MakeMove(i_Move.X, i_Move.Y, i_Color);
            var otherColor = SquareTypeUtil.GetOtherColor(i_Color);
            var possibleMoves = model.GetPossibleMovesFor(otherColor);
            if (possibleMoves.Count == 0 || i_Depth == 0)
            {
                a = model.GetPieceCountOfType(getColor()) -
                    model.GetPieceCountOfType(SquareTypeUtil.GetOtherColor(getColor())) + i_Depth;
            }
            else
            {
                foreach (var move in possibleMoves)
                {
                    a = Math.Max(a, alphaBeta(model.GetBoard(), otherColor, move, i_Depth - 1, -b, -a));
                    if (b <= a)
                    {
                        break;
                    }
                }
            }

            return a;
        }
Exemplo n.º 2
0
 public void testShouldRerieveBestStartingMove()
 {
     var boardModel = new ReverciBoardModel(createBoardFrom(
                                                new[]
                                                    {
                                                        new[] { X, X, X, X, X },
                                                        new[] { X, W, B, W, X },
                                                        new[] { X, B, X, X, X },
                                                        new[] { X, X, X, X, X },
                                                        new[] { X, X, X, X, X },
                                                    }
                                                ));
     var player = new SmartComputerPlayer(2);
     player.setBoardModel(boardModel);
     player.setColor(eCoinType.Black);
     Assert.AreEqual(new Point(0, 1), player.GetMove());
 }
Exemplo n.º 3
0
 public ScanUpForwardDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
Exemplo n.º 4
0
 protected ScanTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
 {
     r_BoardModel = i_BoardModel;
     r_Color = i_Color;
 }
Exemplo n.º 5
0
 public ScanForwardTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
Exemplo n.º 6
0
 public ScanDownBackDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
Exemplo n.º 7
0
 public void testShouldSaveInitialState()
 {
     var boardModel = new ReverciBoardModel(ReverciBoardBuilder.CreateInitialBoardWithSize(4));
     Assert.AreEqual(ReverciBoardBuilder.CreateInitialBoardWithSize(4), boardModel.GetBoard());
 }
Exemplo n.º 8
0
 public void setUp()
 {
     m_BoardModel = new ReverciBoardModel(ReverciBoardBuilder.CreateInitialBoardWithSize(4));
 }