Example #1
0
        private void MakeTree(int depth, Board board)
        {
            var possibleMoves = board.PossibleMoves();

            foreach (var move in possibleMoves)
            {
                board.MakeMove(move);
                MoveTree tree;
                var      serial = board.SerialNumber;

                if (_calculated.ContainsKey(serial))
                {
                    tree = _calculated[serial];
                    if (tree._nodes.Count > 0 && tree._nodes.First().Move.Piece.Color == move.Piece.Color)
                    {
                        throw new Exception();
                    }
                }
                else
                {
                    tree = new MoveTree(depth - 1, board, _calculated);
                    _calculated[serial] = tree;
                }

                var node = new Node(move, tree);
                _nodes.Add(node);

                board.UndoLastMove();
            }
        }
Example #2
0
 public Node(IMove move, MoveTree tree)
 {
     Move = move;
     Tree = tree;
 }