public TTTBoard() {
		grid = new Grid();
		ComputerPlayerMinMax computer = new ComputerPlayerMinMax(grid);
		computer.setType(CellType.CROSS);
		
		int firstPlayer = -1;
		System.out.println("Your symbol is O and computer's symbol is X.");
		System.out.println("Enter 0 to play first; 1 to let computer play first.");
		try {
			firstPlayer = input.nextInt();
		} catch (Exception e) {
			System.out.println("Invalid input. Please enter either 0 or 1.");
		}
		while (firstPlayer < 0 || firstPlayer > 1) {
			System.out.println("Please enter either 1 or 0.");
			while (!input.hasNextInt()) {
				System.out.println("That's not a number!");
				input.next();
			}
			firstPlayer = input.nextInt();
		}
		
		gameInit(firstPlayer);
		System.out.println("Board grid before starting the game.");
		grid.drawGrid();
		do {
			playerMove(currentPlayer, computer);
			grid.drawGrid();
			updateGameState(currentPlayer);

			if (currentState == GameState.CROSS_WON) {
				System.out.println("COMPUTER WON! TRY AGAIN!");
				System.out.println("============================================");
			}
			else if (currentState == GameState.CIRCLE_WON) {
				System.out.println("YOU WON! GOOD JOB!");
				System.out.println("============================================");
			}
			else if (currentState == GameState.DRAW) {
				System.out.println("DRAW! NICE TRY!");
				System.out.println("============================================");
			}

			currentPlayer = (currentPlayer == CellType.CROSS) ? CellType.CIRCLE : CellType.CROSS;
		}
		// keep on playing until one player wins or the game is drawn
		while (currentState == GameState.PLAYING);
	}