public static void main(String[] args) {		
		BoardInterface board = new Board();
		BoardViewer boardViewer = new BoardViewer();
		board.initializeBoard(3);
		boardViewer.setViewedBoard(board);
		
		Score score = new Score();
		
		Output oc = new OutputImpl(new ConsoleDisplay());
		Player player1 = new HumanPlayer(new PlayerConsole());
		Player player2;
		String gameMode = "";
		
		try {
			gameMode = initializeGame(oc,"Please choose a game mode\n1.  Player vs. Computer\n2.  Player vs. Player");
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		
		if (gameMode.equals("2")) {
			player2 = new HumanPlayer(new PlayerConsole());
		}
		else {
			try {
				gameMode = initializeGame(oc,"Please choose a difficulty\n1.  Difficult\n2.  Easy");
			}
			catch (IOException e) {
				e.printStackTrace();
			}
			if (gameMode.equals("2")) {
				player2 = new AIPlayer(new PlayerConsole());
			}
			else {
				player2 = new DifficultAIPlayer(new PlayerConsole());
				//player2.setReferenceBoard(board);
			}
		}
		
		oc.drawBoard(boardViewer);
		//Move move = new Move();
		
		player1.setPersonalSymbol("x");
		player2.setPersonalSymbol("o");
		
		oc.writeToScreen("Choose your fate");

        score.setTurnCounter(0);
		
		while (true) {
			if (score.isTie(boardViewer)) {
				break;
			}
			if (!continueGame(player1, oc, boardViewer, score)) {
				oc.writeToScreen("Player 1 has won the game!");
				return;
			}
			
			if (score.isTie(boardViewer)) {
				break;
			}
			if (!continueGame(player2, oc, boardViewer, score)) {
				oc.writeToScreen("Player 2 has won the game!");
				return;
			}
		}
		
		oc.clearScreen();
		oc.drawBoard(boardViewer);
		oc.writeToScreen("Game is a draw");
		
	}