Android Open Source - dragon-wars Node






From Project

Back to project page dragon-wars.

License

The source code is released under:

GNU General Public License

If you think the Android project dragon-wars listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.group7.dragonwars.engine.GoalArbitration;
//w ww  . ja  v  a2 s .  co m
import java.util.ArrayList;
import java.util.List;

import android.util.Log;


public final class Node {
    private AtomicAction nodeAction;
    private Node nodeParent;
    private List<Node> children;
    private int min = -1,
                max = -1;
    private float minValue = Float.MAX_VALUE;   //Min child node value
    private float maxValue = Float.MIN_VALUE;   //Max child node value
    private int nodeDepth;
    private float currentValue;
    private static int size = 1;                        //Tree size thus far
    private static int maxSize = 300;                   //Max tree size

    public Node(final Node parent, final int depth,
                final float currentvalue, final AtomicAction action) {
        nodeAction = action;
        nodeParent = parent;
        nodeDepth = depth;
        currentValue = currentvalue;
        children = new ArrayList<Node>();
    }

    public List<AtomicAction> getActions() {
        List<AtomicAction> nodes = new ArrayList<AtomicAction>();

        //explore tree recursively up to a defined depth
        for (Node child : children) {
            nodes.addAll(child.getActions());
        }

        if (children.size() == 0) {
            if (this.nodeAction != null) {
                nodes.add(this.nodeAction);
            } else {
                Log.d("Node", "The only action we had was null.");
            }
        }

        return nodes;
    }

    public List<Node> getTerminals() {
        List<Node> nodes = new ArrayList<Node>();

        //explore tree recursively up to a defined depth
        for (Node child : children) {
            nodes.addAll((List<Node>)child.getTerminals());
        }

        if (children.size() == 0) {
            nodes.add(this);
        }

        return nodes;
    }

    //collapse tree from bottom to the base node
    public float Collapse() {
        float value = currentValue;

        if (getMiniMax()) {
            for (Node child : children) {
                value += child.Collapse();
                size--;
            }
        } else {
            for (Node child : children) {
                value += child.Collapse();
                size--;
            }
        }

        children.clear();
        return value;
    }

    public void AddChildNode(final float value, final AtomicAction action) {
        children.add(new Node(this, nodeDepth + 1, value, action));

        if (children.size() > 0) {
            if (value < minValue) {
                minValue = value;
                min = children.size();
            } else if (value > maxValue) {
                maxValue = value;
                max = children.size();
            }
        }

        size++;
    }

    public float getTotalValue() {
        float totalValue = currentValue;

        //recursively calculates current node value;
        if (nodeParent == null) {
            return getCurrentValue();
        }

        if (nodeDepth > 0) {
            totalValue += nodeParent.getTotalValue();
        }

        return totalValue;
    }

    public float getCurrentValue() {
        return currentValue;
    }

    public boolean getMiniMax() {
        return nodeDepth % 2 == 0;
    }

    public void setSize(final int newSize) {
        size = newSize;
    }

    public int getSize() {
        return size;
    }

    public boolean isFull() {
        return maxSize <= size;
    }
}




Java Source Code List

com.group7.dragonwars.DrawingThread.java
com.group7.dragonwars.GameActivity.java
com.group7.dragonwars.GameView.java
com.group7.dragonwars.HelpActivity.java
com.group7.dragonwars.IsAiAdapter.java
com.group7.dragonwars.MainMenuActivity.java
com.group7.dragonwars.MapSelectActivity.java
com.group7.dragonwars.PlayerSelectActivity.java
com.group7.dragonwars.Results.java
com.group7.dragonwars.StatisticsActivity.java
com.group7.dragonwars.engine.BasicMapInfo.java
com.group7.dragonwars.engine.BitmapChanger.java
com.group7.dragonwars.engine.Building.java
com.group7.dragonwars.engine.DrawableMapObject.java
com.group7.dragonwars.engine.FloatPair.java
com.group7.dragonwars.engine.FuncEx.java
com.group7.dragonwars.engine.Func.java
com.group7.dragonwars.engine.GameField.java
com.group7.dragonwars.engine.GameFinishedException.java
com.group7.dragonwars.engine.GameMap.java
com.group7.dragonwars.engine.GameState.java
com.group7.dragonwars.engine.InformationState.java
com.group7.dragonwars.engine.Logic.java
com.group7.dragonwars.engine.MapReader.java
com.group7.dragonwars.engine.Pair.java
com.group7.dragonwars.engine.PlayerAI.java
com.group7.dragonwars.engine.Player.java
com.group7.dragonwars.engine.Position.java
com.group7.dragonwars.engine.RangedUnit.java
com.group7.dragonwars.engine.Statistics.java
com.group7.dragonwars.engine.Unit.java
com.group7.dragonwars.engine.Database.Database.java
com.group7.dragonwars.engine.GoalArbitration.AtomicAction.java
com.group7.dragonwars.engine.GoalArbitration.AttackAt.java
com.group7.dragonwars.engine.GoalArbitration.BuildUnit.java
com.group7.dragonwars.engine.GoalArbitration.MoveTo.java
com.group7.dragonwars.engine.GoalArbitration.Node.java
com.group7.dragonwars.engine.GoalArbitration.StateTree.java