public Point playerTakesTurn(Player player, Point selectedLocation) throws Connect4Exception, GameException {
        Point locationMarkerPlaced = null;

        if (player ==  null) {
            throw new Connect4Exception(ErrorType.ERROR107.getMessage());
        }

        if (player.getPlayerType() != PlayerType.REGULAR_PLAYER && 
            player.getPlayerType() != PlayerType.COMPUTER_PLAYER) {
            throw new Connect4Exception(ErrorType.ERROR108.getMessage());
        }
        
                
        if (this.game.getStatus() != GameStatus.PLAYING ) {
            throw new GameException(ErrorType.ERROR109.getMessage());
        }

        PlayerType playerType = player.getPlayerType();

        if (playerType == PlayerType.REGULAR_PLAYER) {
            this.regularTurn(player, selectedLocation);
            locationMarkerPlaced = selectedLocation;
        }
        else if (playerType == PlayerType.COMPUTER_PLAYER) {
            locationMarkerPlaced = this.coumputerTakesTurn(player);
        }

        this.alternatePlayers();

        return locationMarkerPlaced;
    }