Esempio n. 1
0
        void SpanTree(IMoveNode node, int currentDepth)
        {
            if (currentDepth == _depth)
                return;

            foreach (var piece in node.MoveComposite.Board.Pieces)
            {
                var boardCopy = node.MoveComposite.Board.Clone();
                _module = MoveModule.GetBuilder().BoardIs(boardCopy).Build();

                foreach(var move in _module.AllowedMoves(node.MoveComposite.Move.Piece))
                {
                    node.AddChild(MoveNode
                                    .GetBuilder()
                                    .LevelIs(currentDepth)
                                    .MoveCompositeIs(MoveComposite
                                                    .GetBuilder()
                                                    .MoveIs(Move
                                                            .GetBuilder()
                                                            .PieceIs(piece.Clone())
                                                            .TargetIs(move)
                                                            .Build())
                                                    .Build())
                                    .Build());
                }
                foreach(var child in node.Leafs)
                {
                    SpanTree(child, currentDepth + 1);
                }
            }
        }
Esempio n. 2
0
 MoveTree(int depth, IMoveNode root)
 {
     _depth = depth;
     _root = root;
     SpanTree(_root, 0);
 }
Esempio n. 3
0
 public void RemoveChild(IMoveNode node)
 {
     Leafs.Remove(node);
 }
Esempio n. 4
0
 public IMoveTreeBuilder RootIs(IMoveNode root)
 {
     _root = root;
     return this;
 }
Esempio n. 5
0
 public void AddChild(IMoveNode node)
 {
     _leafs.Add(node);
 }