Exemple #1
0
        public void EvaluationFunction(BTNode node)
        {
            if (node.getYesNode() != null)
            {
                EvaluationFunction(node.getYesNode());
            }

            if (node.getNoNode() != null)
            {
                EvaluationFunction(node.getNoNode());
            }

            if (node.getYesNode() == null && node.getNoNode() == null)
            {
                node.value = (int)node.getMessage().LongCount();
                Console.WriteLine(node.getMessage() + ": " + node.value + ": " + node.IsLeafNode(node));
            }
        }
Exemple #2
0
        public int MiniMax(BTNode node, int depth)
        {
            if (node.IsLeafNode(node.getYesNode()))
            {
                if (depth % 2 == 0)
                {
                    if (node.value == 0)
                    {
                        node.value = node.getYesNode().value;
                    }
                    else if (node.value < node.getYesNode().value)
                    {
                        node.value = node.getYesNode().value;
                    }
                }
                else
                {
                    if (node.value == 0)
                    {
                        node.value = node.getYesNode().value;
                    }
                    else if (node.value > node.getYesNode().value)
                    {
                        node.value = node.getYesNode().value;
                    }
                }
            }

            if (node.IsLeafNode(node.getNoNode()))
            {
                if (depth % 2 == 0)
                {
                    if (node.value == 0)
                    {
                        node.value = node.getNoNode().value;
                    }
                    else if (node.value < node.getNoNode().value)
                    {
                        node.value = node.getNoNode().value;
                    }
                }
                else
                {
                    if (node.value == 0)
                    {
                        node.value = node.getNoNode().value;
                    }
                    else if (node.value > node.getNoNode().value)
                    {
                        node.value = node.getNoNode().value;
                    }
                }
            }

            if (!node.IsLeafNode(node.getYesNode()) && !node.IsLeafNode(node.getNoNode()))
            {
                if (node.getYesNode() != null)
                {
                    node.value = MiniMax(node.getYesNode(), depth += 1);
                }

                if (node.getNoNode() != null)
                {
                    node.value = MiniMax(node.getNoNode(), depth += 1);
                }
            }

            return(node.value);
        }