ANCOVA with one factor/independent variable and two covariates in R I did a study in which participants were randomly divided into 3 conditions, each of which completed a different memory test (with different difficulty levels). Additionally, all participants did an IQ test.
I want to know if memory results are different depending on the test they did, while controlling for IQ and gender. So my covariates are IQ and gender, but it's important to note that there's also a correlation between them.
I have performed two separate ANCOVAs but I want to have them in a single one, if possible. My code currently looks like this:
aov(memory ~ IQ + condition, df)
aov(memory ~ gender + condition)
Note: Results from memory tests are discrete values ranging from 0 to 16. I have 433 participants and they were only tested once.

There's no problem with having multiple covariates in ANCOVA, even though the emphasis in courses might be on single covariates. ANCOVA can be considered just a particular case of a regression model, where a categorical predictor is of main interest and you want to adjust for other categorical or continuous predictors.
There's also no problem in having correlated predictors. That might inflate the standard errors of the coefficient estimates for the correlated predictors, but with a randomized assignment of memory test type that shouldn't affect your main evaluation of memory test results versus memory test type.
The bigger problem here is the nature of your outcome measure, which is discrete with only 17 levels. That type of outcome is often hard to reconcile with the assumption of a normal distribution of observed residuals around model predictions, or more precisely, the normal distribution of coefficient estimates that a normal distribution of residuals helps ensure. The assumption about a normal distribution of coefficient estimates forms the basis of things like F-tests for evaluating statistical significance.
As you have a reasonably sized study, if your outcome measures are generally near the middle of the scale you might get away with the following simple model in R:
linModel <- lm(memory ~ condition + IQ + gender)

but you should then check carefully whether the assumptions are met, for example by examining the plots returned by plot(linModel).
If the assumptions aren't met, then you could consider modeling repeated bootstrap samples of the data to get more reliable estimates of coefficient standard errors. You also could consider ordinal logistic regression, which makes no assumptions about the spacing of outcomes along the scale, instead of an ordinary least-squares model.
