public MMNode(MMNode parent, Tuple<Integer, Integer> move, Board board, String color) throws Exception {
		this.move = move;
		this.quality = -1;
		this.children = new ArrayList<MMNode>();
		if(move != null) {
			board.makeMove(move, color);
		}
		this.parent = parent;
		color = (color.equals("w") ? "b" : "w");
		this.color = color;
		for(Tuple<Integer, Integer> item : board.getListValidMoves()) {
			Board copy_board = board.duplicate();
			String copy_color = (color.equals("w") ? "w" : "b");
			MMNode new_node = new MMNode(this, item, copy_board, copy_color);
			this.children.add(new_node);
		}
		if(this.children.size() == 0) {
			String[][] b = board.getState();
			for(int x = 0; x < 7; ++x) {
				for(int y = 0; y < 7; ++y) {
					System.out.print(b[x][y] + " ");
				}
				System.out.println();
			}

			String result = Rules.calculateScore(board);
			System.out.println(result);
			double value;
			if(result.equals("0")) {
				System.out.println(">> .5");
				value = .5;
			} else if(!result.equals(this.color)) {
				System.out.println(">> 1");
				value = 1;
			} else {
				System.out.println(">> 0");
				value = 0;
			}
			this.quality = value;
			System.out.println("===========================");
		}

	}