Gametree无法正常使用Java。 addChild()函数可以吗?

时间:2015-11-22 15:42:15

标签: java data-structures tree

   import java.util.ArrayList;
   import java.util.List;


public class Tree 
{
    private Board board;
    private List<Tree> children;
    private Tree parent;

    public Tree(Board board1)
    {
        this.board = board1;
        this.children = new ArrayList<Tree>();
    }
    public Tree(Tree t1)
    {

    }

    public Tree createTree(Tree tree, boolean isHuman, int depth)
    {
        Player play1 = new Player();
        ArrayList<Board> potBoards = new ArrayList<Board>(play1.potentialMoves(tree.board, isHuman));

        if (board.gameEnd() || depth == 0)
        {
            return null;
        }

        //Tree oldTree = new Tree(board);

        for (int i = 0; i < potBoards.size() - 1; i++)
        {
            Tree newTree = new Tree(potBoards.get(i));
            createTree(newTree, !isHuman, depth - 1);
            tree.addChild(newTree);
        }

        return tree;
    }

    private Tree addChild(Tree child) 
    {
        Tree childNode = new Tree(child);
        childNode.parent = this;
        this.children.add(childNode);
        return childNode; 
    }
   }
你好。我试图创建一个将来由minimax处理的游戏树。我认为错误发生在AddChild函数或potentialMoves? potentialMoves返回玩家或计算机可以进行的所有潜在动作。例如在奥赛罗,玩家可以去

 0 1 2 3 4 5 6 7          
 +-+-+-+-+-+-+-+-+
0| | | | | | | | |
 +-+-+-+-+-+-+-+-+
1| | | | | | | | |
 +-+-+-+-+-+-+-+-+
2| | | |b| | | | |
 +-+-+-+-+-+-+-+-+
3| | | |b|b| | | |
 +-+-+-+-+-+-+-+-+
4| | | |b|w| | | |
 +-+-+-+-+-+-+-+-+
5| | | | | | | | |
 +-+-+-+-+-+-+-+-+
6| | | | | | | | |
 +-+-+-+-+-+-+-+-+
7| | | | | | | | |
 +-+-+-+-+-+-+-+-+
 +-+-+-+-+-+-+-+-+
0| | | | | | | | |

 +-+-+-+-+-+-+-+-+
1| | | | | | | | |
 +-+-+-+-+-+-+-+-+
2| | | | | | | | |
 +-+-+-+-+-+-+-+-+
3| | |b|b|b| | | |
 +-+-+-+-+-+-+-+-+
4| | | |b|w| | | |
 +-+-+-+-+-+-+-+-+
5| | | | | | | | |
 +-+-+-+-+-+-+-+-+
6| | | | | | | | |
 +-+-+-+-+-+-+-+-+
7| | | | | | | | |
 +-+-+-+-+-+-+-+-+

 0 1 2 3 4 5 6 7
 +-+-+-+-+-+-+-+-+
0| | | | | | | | |
 +-+-+-+-+-+-+-+-+
1| | | | | | | | |
 +-+-+-+-+-+-+-+-+
2| | | | | | | | |
 +-+-+-+-+-+-+-+-+
3| | | |w|b| | | |
 +-+-+-+-+-+-+-+-+
4| | | |b|b|b| | |
 +-+-+-+-+-+-+-+-+
5| | | | | | | | |
 +-+-+-+-+-+-+-+-+
6| | | | | | | | |
 +-+-+-+-+-+-+-+-+
7| | | | | | | | |
 +-+-+-+-+-+-+-+-+

 0 1 2 3 4 5 6 7
 +-+-+-+-+-+-+-+-+
0| | | | | | | | |
 +-+-+-+-+-+-+-+-+
1| | | | | | | | |
 +-+-+-+-+-+-+-+-+
2| | | | | | | | |
 +-+-+-+-+-+-+-+-+
3| | | |w|b| | | |
 +-+-+-+-+-+-+-+-+
4| | | |b|b|| | |
 +-+-+-+-+-+-+-+-+
5| | | | |b| | | |
 +-+-+-+-+-+-+-+-+
6| | | | | | | | |
 +-+-+-+-+-+-+-+-+
7| | | | | | | | |
 +-+-+-+-+-+-+-+-+

第一回合。潜在的移动不会永久改变正在播放的棋盘。它返回一个ArrayList。

我的主要内容是:

Tree gameTree = new Tree(boardOthello);
Tree pickTree = gameTree.createTree(gameTree, true, 2);

addChild()函数看起来没问题,还是我的代码中还缺少其他东西?

0 个答案:

没有答案