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); } } }
MoveTree(int depth, IMoveNode root) { _depth = depth; _root = root; SpanTree(_root, 0); }
public void RemoveChild(IMoveNode node) { Leafs.Remove(node); }
public IMoveTreeBuilder RootIs(IMoveNode root) { _root = root; return this; }
public void AddChild(IMoveNode node) { _leafs.Add(node); }