@Override
	public Move getMove() {
		Node n = new Node(state);
		//alphaValue(n, -inf, inf, depth);
		Move res = null;
		int max = -inf;
		for (Node i : n.getChildren()) {
			//print(i.state);
			int value = betaValue(i, -inf, inf, depth);
			Move m = i.move;
			//System.out.printf("%d: (%d, %d) -> (%d, %d)\n", value, m.getStart().getRow(), m.getStart().getCol(), m.getEnd().getRow(), m.getEnd().getCol());
			if (value > max) {
				max = value;
				res = m;
			}
		}
		this.move(res.getStart(), res.getEnd());
		return res;
	}