double playGame(Player black, Player white) {
		System.out.println(black + " vs " + white);
		long[] elapsedTime = new long[2];
		State board = new State();
		while (!board.gameOver()) {
			int move;
			long before = System.nanoTime();
			if (board.getColorToPlay() == 'X') {
				move = black.move(board);
				elapsedTime[0] += System.nanoTime() - before;
				if (elapsedTime[0] > TIME_LIMIT) {
					System.out.println("BLACK FORFEITS ON TIME");
					return 0;
				}
			} else {
				move = white.move(board);
				elapsedTime[1] += System.nanoTime() - before;
				if (elapsedTime[1] > TIME_LIMIT) {
					System.out.println("WHITE FORFEITS ON TIME");
					return 1;
				}
			}
			if (board.legalMoves().contains(move)) {
				board.play(move);
			} else {
				System.out.println("Illegal move!");
			}
		}
		System.out.println("Elapsed time (nanoseconds):");
		System.out.println("Black: " + elapsedTime[0]);
		System.out.println("White: " + elapsedTime[1]);
		if (board.score() > 0) {
			return 1.0;
		} else if (board.score() < 0) {
			return 0.0;
		} else {
			return 0.5;
		}
	}