Example #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;
        }
Example #2
0
 public void testShouldSaveInitialState()
 {
     var boardModel = new ReverciBoardModel(ReverciBoardBuilder.CreateInitialBoardWithSize(4));
     Assert.AreEqual(ReverciBoardBuilder.CreateInitialBoardWithSize(4), boardModel.GetBoard());
 }