Ejemplo n.º 1
0
        public void AddChildren(AiNode node, ColorEnum color)
        {
            List <Move> AllMoves = new List <Move>();

            foreach (var piece in node.CurrentContext.Layout)
            {
                if (piece.Value.Color == color)
                {
                    foreach (var destination in piece.Value.GetNextLegalMoves(piece.Key, node.CurrentContext))
                    {
                        if (AllMoves.Count < 10) //prea multe posibilitati si dureaza foarte mult, asa ca reduc la 10 de mutari
                        {
                            AllMoves.Add(new Move(piece.Key, destination, piece.Value));
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }
            foreach (var move in AllMoves)
            {
                AiNode child = new AiNode();
                child.CurrentContext = node.CurrentContext.Clone();
                child.CurrentContext.Update(move);
                child.Move   = move;
                child.Parent = node;
                child.Value  = CalculateValue(child.CurrentContext.Layout, child.Move);
                node.AddChild(child);
            }
        }